

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="Description" content="scikit-learn: machine learning in Python">

  
  <title>Version 0.22.0 &mdash; scikit-learn 0.22 documentation</title>
  
  <link rel="canonical" href="http://scikit-learn.org/stable/whats_new/v0.22.html" />

  
  <link rel="shortcut icon" href="../_static/favicon.ico"/>
  

  <link rel="stylesheet" href="../_static/css/vendor/bootstrap.min.css" type="text/css" />
  <link rel="stylesheet" href="../_static/gallery.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script> 
</head>
<body>
<nav id="navbar" class="sk-docs-navbar navbar navbar-expand-md navbar-light bg-light py-0">
  <div class="container-fluid sk-docs-container px-0">
      <a class="navbar-brand py-0" href="../index.html">
        <img
          class="sk-brand-img"
          src="../_static/scikit-learn-logo-small.png"
          alt="logo"/>
      </a>
    <button
      id="sk-navbar-toggler"
      class="navbar-toggler"
      type="button"
      data-toggle="collapse"
      data-target="#navbarSupportedContent"
      aria-controls="navbarSupportedContent"
      aria-expanded="false"
      aria-label="Toggle navigation"
    >
      <span class="navbar-toggler-icon"></span>
    </button>

    <div class="sk-navbar-collapse collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav mr-auto">
        <li class="nav-item">
          <a class="sk-nav-link nav-link" href="../install.html">Install</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link" href="../user_guide.html">User Guide</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link" href="../modules/classes.html">API</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link" href="../auto_examples/index.html">Examples</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../getting_started.html">Getting Started</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../tutorial/index.html">Tutorial</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../glossary.html">Glossary</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../developers/index.html">Development</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../faq.html">FAQ</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../related_projects.html">Related packages</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../roadmap.html">Roadmap</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../about.html">About us</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="https://github.com/scikit-learn/scikit-learn">GitHub</a>
        </li>
        <li class="nav-item">
          <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="https://scikit-learn.org/dev/versions.html">Other Versions</a>
        </li>
        <li class="nav-item dropdown nav-more-item-dropdown">
          <a class="sk-nav-link nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">More</a>
          <div class="dropdown-menu" aria-labelledby="navbarDropdown">
              <a class="sk-nav-dropdown-item dropdown-item" href="../getting_started.html">Getting Started</a>
              <a class="sk-nav-dropdown-item dropdown-item" href="../tutorial/index.html">Tutorial</a>
              <a class="sk-nav-dropdown-item dropdown-item" href="../glossary.html">Glossary</a>
              <a class="sk-nav-dropdown-item dropdown-item" href="../developers/index.html">Development</a>
              <a class="sk-nav-dropdown-item dropdown-item" href="../faq.html">FAQ</a>
              <a class="sk-nav-dropdown-item dropdown-item" href="../related_projects.html">Related packages</a>
              <a class="sk-nav-dropdown-item dropdown-item" href="../roadmap.html">Roadmap</a>
              <a class="sk-nav-dropdown-item dropdown-item" href="../about.html">About us</a>
              <a class="sk-nav-dropdown-item dropdown-item" href="https://github.com/scikit-learn/scikit-learn">GitHub</a>
              <a class="sk-nav-dropdown-item dropdown-item" href="https://scikit-learn.org/dev/versions.html">Other Versions</a>
          </div>
        </li>
      </ul>
      <div id="searchbox" role="search">
          <div class="searchformwrapper">
          <form class="search" action="../search.html" method="get">
            <input class="sk-search-text-input" type="text" name="q" aria-labelledby="searchlabel" />
            <input class="sk-search-text-btn" type="submit" value="Go" />
          </form>
          </div>
      </div>
    </div>
  </div>
</nav>
<div class="d-flex" id="sk-doc-wrapper">
    <input type="checkbox" name="sk-toggle-checkbox" id="sk-toggle-checkbox">
    <label id="sk-sidemenu-toggle" class="sk-btn-toggle-toc btn sk-btn-primary" for="sk-toggle-checkbox">Toggle Menu</label>
    <div id="sk-sidebar-wrapper" class="border-right">
      <div class="sk-sidebar-toc-wrapper">
        <div class="sk-sidebar-toc-logo">
          <a href="../index.html">
            <img
              class="sk-brand-img"
              src="../_static/scikit-learn-logo-small.png"
              alt="logo"/>
          </a>
        </div>
        <div class="btn-group w-100 mb-2" role="group" aria-label="rellinks">
            <a href="../whats_new.html" role="button" class="btn sk-btn-rellink py-1" sk-rellink-tooltip="Release History">Prev</a><a href="../whats_new.html" role="button" class="btn sk-btn-rellink py-1" sk-rellink-tooltip="Release History">Up</a>
            <a href="v0.21.html" role="button" class="btn sk-btn-rellink py-1" sk-rellink-tooltip="Version 0.21.3">Next</a>
        </div>
        <div class="alert alert-danger p-1 mb-2" role="alert">
          <p class="text-center mb-0">
          <strong>scikit-learn 0.22</strong><br/>
          <a href="http://scikit-learn.org/dev/versions.html">Other versions</a>
          </p>
        </div>
        <div class="alert alert-warning p-1 mb-2" role="alert">
          <p class="text-center mb-0">
            Please <a class="font-weight-bold" href="../about.html#citing-scikit-learn"><string>cite us</string></a> if you use the software.
          </p>
        </div>
          <div class="sk-sidebar-toc">
            <ul>
<li><a class="reference internal" href="#">Version 0.22.0</a><ul>
<li><a class="reference internal" href="#legend-for-changelogs">Legend for changelogs</a></li>
<li><a class="reference internal" href="#website-update">Website update</a></li>
<li><a class="reference internal" href="#clear-definition-of-the-public-api">Clear definition of the public API</a></li>
<li><a class="reference internal" href="#deprecations-using-futurewarning-from-now-on">Deprecations: using <code class="docutils literal notranslate"><span class="pre">FutureWarning</span></code> from now on</a></li>
<li><a class="reference internal" href="#changed-models">Changed models</a></li>
<li><a class="reference internal" href="#changelog">Changelog</a><ul>
<li><a class="reference internal" href="#sklearn-base"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.base</span></code></a></li>
<li><a class="reference internal" href="#sklearn-calibration"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.calibration</span></code></a></li>
<li><a class="reference internal" href="#sklearn-cluster"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.cluster</span></code></a></li>
<li><a class="reference internal" href="#sklearn-compose"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.compose</span></code></a></li>
<li><a class="reference internal" href="#sklearn-cross-decomposition"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.cross_decomposition</span></code></a></li>
<li><a class="reference internal" href="#sklearn-datasets"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.datasets</span></code></a></li>
<li><a class="reference internal" href="#sklearn-decomposition"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.decomposition</span></code></a></li>
<li><a class="reference internal" href="#sklearn-dummy"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.dummy</span></code></a></li>
<li><a class="reference internal" href="#sklearn-ensemble"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.ensemble</span></code></a></li>
<li><a class="reference internal" href="#sklearn-feature-extraction"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.feature_extraction</span></code></a></li>
<li><a class="reference internal" href="#sklearn-feature-selection"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.feature_selection</span></code></a></li>
<li><a class="reference internal" href="#sklearn-gaussian-process"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.gaussian_process</span></code></a></li>
<li><a class="reference internal" href="#sklearn-impute"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.impute</span></code></a></li>
<li><a class="reference internal" href="#sklearn-inspection"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.inspection</span></code></a></li>
<li><a class="reference internal" href="#sklearn-kernel-approximation"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.kernel_approximation</span></code></a></li>
<li><a class="reference internal" href="#sklearn-linear-model"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.linear_model</span></code></a></li>
<li><a class="reference internal" href="#sklearn-manifold"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.manifold</span></code></a></li>
<li><a class="reference internal" href="#sklearn-metrics"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.metrics</span></code></a></li>
<li><a class="reference internal" href="#sklearn-model-selection"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.model_selection</span></code></a></li>
<li><a class="reference internal" href="#sklearn-multioutput"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.multioutput</span></code></a></li>
<li><a class="reference internal" href="#sklearn-naive-bayes"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.naive_bayes</span></code></a></li>
<li><a class="reference internal" href="#sklearn-neighbors"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.neighbors</span></code></a></li>
<li><a class="reference internal" href="#sklearn-neural-network"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.neural_network</span></code></a></li>
<li><a class="reference internal" href="#sklearn-pipeline"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.pipeline</span></code></a></li>
<li><a class="reference internal" href="#sklearn-preprocessing"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.preprocessing</span></code></a></li>
<li><a class="reference internal" href="#id2"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.model_selection</span></code></a></li>
<li><a class="reference internal" href="#sklearn-svm"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.svm</span></code></a></li>
<li><a class="reference internal" href="#sklearn-tree"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.tree</span></code></a></li>
<li><a class="reference internal" href="#sklearn-utils"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.utils</span></code></a></li>
<li><a class="reference internal" href="#sklearn-isotonic"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.isotonic</span></code></a></li>
<li><a class="reference internal" href="#miscellaneous">Miscellaneous</a></li>
</ul>
</li>
<li><a class="reference internal" href="#changes-to-estimator-checks">Changes to estimator checks</a></li>
<li><a class="reference internal" href="#code-and-documentation-contributors">Code and Documentation Contributors</a></li>
</ul>
</li>
</ul>

          </div>
      </div>
    </div>
    <div id="sk-page-content-wrapper">
      <div class="sk-page-content container-fluid body px-md-3" role="main">
        
  <div class="section" id="version-0-22-0">
<span id="changes-0-22"></span><h1>Version 0.22.0<a class="headerlink" href="#version-0-22-0" title="Permalink to this headline">¶</a></h1>
<p><strong>December 3 2019</strong></p>
<p>For a short description of the main highlights of the release, please
refer to
<a class="reference internal" href="../auto_examples/release_highlights/plot_release_highlights_0_22_0.html#sphx-glr-auto-examples-release-highlights-plot-release-highlights-0-22-0-py"><span class="std std-ref">Release Highlights for scikit-learn 0.22</span></a>.</p>
<div class="section" id="legend-for-changelogs">
<h2>Legend for changelogs<a class="headerlink" href="#legend-for-changelogs" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Major Feature</span></span> : something big that you couldn’t do before.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span> : something that you couldn’t do before.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Efficiency</span></span> : an existing feature now may not require as much computation or
memory.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span> : a miscellaneous minor improvement.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span> : something that previously didn’t work as documentated – or according
to reasonable expectations – should now work.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span> : you will need to change your code to have the same effect in the
future; or a feature will be removed in the future.</p></li>
</ul>
</div>
<div class="section" id="website-update">
<h2>Website update<a class="headerlink" href="#website-update" title="Permalink to this headline">¶</a></h2>
<p><a class="reference external" href="https://scikit-learn.org/">Our website</a> was revamped and given a fresh
new look. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14849">#14849</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p>
</div>
<div class="section" id="clear-definition-of-the-public-api">
<h2>Clear definition of the public API<a class="headerlink" href="#clear-definition-of-the-public-api" title="Permalink to this headline">¶</a></h2>
<p>Scikit-learn has a public API, and a private API.</p>
<p>We do our best not to break the public API, and to only introduce
backward-compatible changes that do not require any user action. However, in
cases where that’s not possible, any change to the public API is subject to
a deprecation cycle of two minor versions. The private API isn’t publicly
documented and isn’t subject to any deprecation cycle, so users should not
rely on its stability.</p>
<p>A function or object is public if it is documented in the <a class="reference external" href="https://scikit-learn.org/dev/modules/classes.html">API Reference</a> and if it can be
imported with an import path without leading underscores. For example
<code class="docutils literal notranslate"><span class="pre">sklearn.pipeline.make_pipeline</span></code> is public, while
<code class="docutils literal notranslate"><span class="pre">sklearn.pipeline._name_estimators</span></code> is private.
<code class="docutils literal notranslate"><span class="pre">sklearn.ensemble._gb.BaseEnsemble</span></code> is private too because the whole <code class="docutils literal notranslate"><span class="pre">_gb</span></code>
module is private.</p>
<p>Up to 0.22, some tools were de-facto public (no leading underscore), while
they should have been private in the first place. In version 0.22, these
tools have been made properly private, and the public API space has been
cleaned. In addition, importing from most sub-modules is now deprecated: you
should for example use <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">sklearn.cluster</span> <span class="pre">import</span> <span class="pre">Birch</span></code> instead of
<code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">sklearn.cluster.birch</span> <span class="pre">import</span> <span class="pre">Birch</span></code> (in practice, <code class="docutils literal notranslate"><span class="pre">birch.py</span></code> has
been moved to <code class="docutils literal notranslate"><span class="pre">_birch.py</span></code>).</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All the tools in the public API should be documented in the <a class="reference external" href="https://scikit-learn.org/dev/modules/classes.html">API
Reference</a>. If you
find a public tool (without leading underscore) that isn’t in the API
reference, that means it should either be private or documented. Please
let us know by opening an issue!</p>
</div>
<p>This work was tracked in <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/9250">issue 9250</a> and <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/12927">issue
12927</a>.</p>
</div>
<div class="section" id="deprecations-using-futurewarning-from-now-on">
<h2>Deprecations: using <code class="docutils literal notranslate"><span class="pre">FutureWarning</span></code> from now on<a class="headerlink" href="#deprecations-using-futurewarning-from-now-on" title="Permalink to this headline">¶</a></h2>
<p>When deprecating a feature, previous versions of scikit-learn used to raise
a <code class="docutils literal notranslate"><span class="pre">DeprecationWarning</span></code>. Since the <code class="docutils literal notranslate"><span class="pre">DeprecationWarnings</span></code> aren’t shown by
default by Python, scikit-learn needed to resort to a custom warning filter
to always show the warnings. That filter would sometimes interfere
with users custom warning filters.</p>
<p>Starting from version 0.22, scikit-learn will show <code class="docutils literal notranslate"><span class="pre">FutureWarnings</span></code> for
deprecations, <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#FutureWarning">as recommended by the Python documentation</a>.
<code class="docutils literal notranslate"><span class="pre">FutureWarnings</span></code> are always shown by default by Python, so the custom
filter has been removed and scikit-learn no longer hinders with user
filters. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15080">#15080</a> by <a class="reference external" href="https://github.com/NicolasHug">Nicolas Hug</a>.</p>
</div>
<div class="section" id="changed-models">
<h2>Changed models<a class="headerlink" href="#changed-models" title="Permalink to this headline">¶</a></h2>
<p>The following estimators and functions, when fit with the same data and
parameters, may produce different models from the previous version. This often
occurs due to changes in the modelling logic (bug fixes or enhancements), or in
random sampling procedures.</p>
<ul class="simple">
<li><p><a class="reference internal" href="../modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans" title="sklearn.cluster.KMeans"><code class="xref py py-class docutils literal notranslate"><span class="pre">cluster.KMeans</span></code></a> when <code class="docutils literal notranslate"><span class="pre">n_jobs=1</span></code>. <span class="raw-html"><span class="badge badge-danger">Fix</span></span> </p></li>
<li><p><a class="reference internal" href="../modules/generated/sklearn.decomposition.SparseCoder.html#sklearn.decomposition.SparseCoder" title="sklearn.decomposition.SparseCoder"><code class="xref py py-class docutils literal notranslate"><span class="pre">decomposition.SparseCoder</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.decomposition.DictionaryLearning.html#sklearn.decomposition.DictionaryLearning" title="sklearn.decomposition.DictionaryLearning"><code class="xref py py-class docutils literal notranslate"><span class="pre">decomposition.DictionaryLearning</span></code></a>, and
<a class="reference internal" href="../modules/generated/sklearn.decomposition.MiniBatchDictionaryLearning.html#sklearn.decomposition.MiniBatchDictionaryLearning" title="sklearn.decomposition.MiniBatchDictionaryLearning"><code class="xref py py-class docutils literal notranslate"><span class="pre">decomposition.MiniBatchDictionaryLearning</span></code></a> <span class="raw-html"><span class="badge badge-danger">Fix</span></span> </p></li>
<li><p><a class="reference internal" href="../modules/generated/sklearn.decomposition.SparseCoder.html#sklearn.decomposition.SparseCoder" title="sklearn.decomposition.SparseCoder"><code class="xref py py-class docutils literal notranslate"><span class="pre">decomposition.SparseCoder</span></code></a> with <code class="docutils literal notranslate"><span class="pre">algorithm='lasso_lars'</span></code> <span class="raw-html"><span class="badge badge-danger">Fix</span></span> </p></li>
<li><p><a class="reference internal" href="../modules/generated/sklearn.decomposition.SparsePCA.html#sklearn.decomposition.SparsePCA" title="sklearn.decomposition.SparsePCA"><code class="xref py py-class docutils literal notranslate"><span class="pre">decomposition.SparsePCA</span></code></a> where <code class="docutils literal notranslate"><span class="pre">normalize_components</span></code> has no effect
due to deprecation.</p></li>
<li><p><a class="reference internal" href="../modules/generated/sklearn.ensemble.HistGradientBoostingClassifier.html#sklearn.ensemble.HistGradientBoostingClassifier" title="sklearn.ensemble.HistGradientBoostingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.HistGradientBoostingClassifier</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.ensemble.HistGradientBoostingRegressor.html#sklearn.ensemble.HistGradientBoostingRegressor" title="sklearn.ensemble.HistGradientBoostingRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.HistGradientBoostingRegressor</span></code></a> <span class="raw-html"><span class="badge badge-danger">Fix</span></span> , <span class="raw-html"><span class="badge badge-success">Feature</span></span> ,
<span class="raw-html"><span class="badge badge-info">Enhancement</span></span> .</p></li>
<li><p><a class="reference internal" href="../modules/generated/sklearn.impute.IterativeImputer.html#sklearn.impute.IterativeImputer" title="sklearn.impute.IterativeImputer"><code class="xref py py-class docutils literal notranslate"><span class="pre">impute.IterativeImputer</span></code></a> when <code class="docutils literal notranslate"><span class="pre">X</span></code> has features with no missing
values. <span class="raw-html"><span class="badge badge-success">Feature</span></span> </p></li>
<li><p><a class="reference internal" href="../modules/generated/sklearn.linear_model.Ridge.html#sklearn.linear_model.Ridge" title="sklearn.linear_model.Ridge"><code class="xref py py-class docutils literal notranslate"><span class="pre">linear_model.Ridge</span></code></a> when <code class="docutils literal notranslate"><span class="pre">X</span></code> is sparse. <span class="raw-html"><span class="badge badge-danger">Fix</span></span> </p></li>
<li><p><a class="reference internal" href="../modules/generated/sklearn.model_selection.StratifiedKFold.html#sklearn.model_selection.StratifiedKFold" title="sklearn.model_selection.StratifiedKFold"><code class="xref py py-class docutils literal notranslate"><span class="pre">model_selection.StratifiedKFold</span></code></a> and any use of <code class="docutils literal notranslate"><span class="pre">cv=int</span></code> with a
classifier. <span class="raw-html"><span class="badge badge-danger">Fix</span></span> </p></li>
<li><p><a class="reference internal" href="../modules/generated/sklearn.cross_decomposition.CCA.html#sklearn.cross_decomposition.CCA" title="sklearn.cross_decomposition.CCA"><code class="xref py py-class docutils literal notranslate"><span class="pre">cross_decomposition.CCA</span></code></a> when using scipy &gt;= 1.3 <span class="raw-html"><span class="badge badge-danger">Fix</span></span> </p></li>
</ul>
<p>Details are listed in the changelog below.</p>
<p>(While we are trying to better inform users by providing this information, we
cannot assure that this list is complete.)</p>
</div>
<div class="section" id="changelog">
<h2>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline">¶</a></h2>
<div class="section" id="sklearn-base">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.base" title="sklearn.base"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.base</span></code></a><a class="headerlink" href="#sklearn-base" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  From version 0.24 <a class="reference internal" href="../modules/generated/sklearn.base.BaseEstimator.html#sklearn.base.BaseEstimator.get_params" title="sklearn.base.BaseEstimator.get_params"><code class="xref py py-meth docutils literal notranslate"><span class="pre">base.BaseEstimator.get_params</span></code></a> will raise an
AttributeError rather than return None for parameters that are in the
estimator’s constructor but not stored as attributes on the instance.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14464">#14464</a> by <a class="reference external" href="https://joelnothman.com/">Joel Nothman</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-calibration">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.calibration" title="sklearn.calibration"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.calibration</span></code></a><a class="headerlink" href="#sklearn-calibration" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug that made <a class="reference internal" href="../modules/generated/sklearn.calibration.CalibratedClassifierCV.html#sklearn.calibration.CalibratedClassifierCV" title="sklearn.calibration.CalibratedClassifierCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">calibration.CalibratedClassifierCV</span></code></a> fail when
given a <code class="docutils literal notranslate"><span class="pre">sample_weight</span></code> parameter of type <code class="docutils literal notranslate"><span class="pre">list</span></code> (in the case where
<code class="docutils literal notranslate"><span class="pre">sample_weights</span></code> are not supported by the wrapped estimator). <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13575">#13575</a>
by <a class="reference external" href="https://github.com/wdevazelhes">William de Vazelhes</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-cluster">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.cluster" title="sklearn.cluster"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.cluster</span></code></a><a class="headerlink" href="#sklearn-cluster" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.cluster.SpectralClustering.html#sklearn.cluster.SpectralClustering" title="sklearn.cluster.SpectralClustering"><code class="xref py py-class docutils literal notranslate"><span class="pre">cluster.SpectralClustering</span></code></a> now accepts precomputed sparse
neighbors graph as input. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/10482">#10482</a> by <a class="reference external" href="https://github.com/TomDLT">Tom Dupre la Tour</a> and
<a class="reference external" href="https://github.com/thechargedneutron">Kumar Ashutosh</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.cluster.SpectralClustering.html#sklearn.cluster.SpectralClustering" title="sklearn.cluster.SpectralClustering"><code class="xref py py-class docutils literal notranslate"><span class="pre">cluster.SpectralClustering</span></code></a> now accepts a <code class="docutils literal notranslate"><span class="pre">n_components</span></code>
parameter. This parameter extends <code class="docutils literal notranslate"><span class="pre">SpectralClustering</span></code> class functionality to
match <a class="reference internal" href="../modules/generated/sklearn.cluster.spectral_clustering.html#sklearn.cluster.spectral_clustering" title="sklearn.cluster.spectral_clustering"><code class="xref py py-meth docutils literal notranslate"><span class="pre">cluster.spectral_clustering</span></code></a>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13726">#13726</a> by <a class="reference external" href="https://github.com/fdas3213">Shuzhe Xiao</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug where <a class="reference internal" href="../modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans" title="sklearn.cluster.KMeans"><code class="xref py py-class docutils literal notranslate"><span class="pre">cluster.KMeans</span></code></a> produced inconsistent results
between <code class="docutils literal notranslate"><span class="pre">n_jobs=1</span></code> and <code class="docutils literal notranslate"><span class="pre">n_jobs&gt;1</span></code> due to the handling of the random state.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/9288">#9288</a> by <a class="reference external" href="https://github.com/bryanyang0528">Bryan Yang</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug where <code class="docutils literal notranslate"><span class="pre">elkan</span></code> algorithm in <a class="reference internal" href="../modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans" title="sklearn.cluster.KMeans"><code class="xref py py-class docutils literal notranslate"><span class="pre">cluster.KMeans</span></code></a> was
producing Segmentation Fault on large arrays due to integer index overflow.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15057">#15057</a> by <a class="reference external" href="https://github.com/balodja">Vladimir Korolev</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.cluster.MeanShift.html#sklearn.cluster.MeanShift" title="sklearn.cluster.MeanShift"><code class="xref py py-class docutils literal notranslate"><span class="pre">MeanShift</span></code></a> now accepts a <a class="reference internal" href="../glossary.html#term-max-iter"><span class="xref std std-term">max_iter</span></a> with a
default value of 300 instead of always using the default 300. It also now
exposes an <code class="docutils literal notranslate"><span class="pre">n_iter_</span></code> indicating the maximum number of iterations performed
on each seed. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15120">#15120</a> by <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.cluster.AgglomerativeClustering.html#sklearn.cluster.AgglomerativeClustering" title="sklearn.cluster.AgglomerativeClustering"><code class="xref py py-class docutils literal notranslate"><span class="pre">cluster.AgglomerativeClustering</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.cluster.FeatureAgglomeration.html#sklearn.cluster.FeatureAgglomeration" title="sklearn.cluster.FeatureAgglomeration"><code class="xref py py-class docutils literal notranslate"><span class="pre">cluster.FeatureAgglomeration</span></code></a> now raise an error if
<code class="docutils literal notranslate"><span class="pre">affinity='cosine'</span></code> and <code class="docutils literal notranslate"><span class="pre">X</span></code> has samples that are all-zeros. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/7943">#7943</a> by
<a class="reference external" href="https://github.com/mthorrell">&#64;mthorrell</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-compose">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.compose" title="sklearn.compose"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.compose</span></code></a><a class="headerlink" href="#sklearn-compose" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>   Adds <a class="reference internal" href="../modules/generated/sklearn.compose.make_column_selector.html#sklearn.compose.make_column_selector" title="sklearn.compose.make_column_selector"><code class="xref py py-func docutils literal notranslate"><span class="pre">compose.make_column_selector</span></code></a> which is used with
<a class="reference internal" href="../modules/generated/sklearn.compose.ColumnTransformer.html#sklearn.compose.ColumnTransformer" title="sklearn.compose.ColumnTransformer"><code class="xref py py-class docutils literal notranslate"><span class="pre">compose.ColumnTransformer</span></code></a> to select DataFrame columns on the basis
of name and dtype. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/12303">#12303</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug in <a class="reference internal" href="../modules/generated/sklearn.compose.ColumnTransformer.html#sklearn.compose.ColumnTransformer" title="sklearn.compose.ColumnTransformer"><code class="xref py py-class docutils literal notranslate"><span class="pre">compose.ColumnTransformer</span></code></a> which failed to
select the proper columns when using a boolean list, with NumPy older than
1.12.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14510">#14510</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug in <a class="reference internal" href="../modules/generated/sklearn.compose.TransformedTargetRegressor.html#sklearn.compose.TransformedTargetRegressor" title="sklearn.compose.TransformedTargetRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">compose.TransformedTargetRegressor</span></code></a> which did not
pass <code class="docutils literal notranslate"><span class="pre">**fit_params</span></code> to the underlying regressor.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14890">#14890</a> by <a class="reference external" href="https://github.com/mfcabrera">Miguel Cabrera</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  The <a class="reference internal" href="../modules/generated/sklearn.compose.ColumnTransformer.html#sklearn.compose.ColumnTransformer" title="sklearn.compose.ColumnTransformer"><code class="xref py py-class docutils literal notranslate"><span class="pre">compose.ColumnTransformer</span></code></a> now requires the number of
features to be consistent between <code class="docutils literal notranslate"><span class="pre">fit</span></code> and <code class="docutils literal notranslate"><span class="pre">transform</span></code>. A <code class="docutils literal notranslate"><span class="pre">FutureWarning</span></code>
is raised now, and this will raise an error in 0.24. If the number of
features isn’t consistent and negative indexing is used, an error is
raised. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14544">#14544</a> by <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-cross-decomposition">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.cross_decomposition" title="sklearn.cross_decomposition"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.cross_decomposition</span></code></a><a class="headerlink" href="#sklearn-cross-decomposition" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.cross_decomposition.PLSCanonical.html#sklearn.cross_decomposition.PLSCanonical" title="sklearn.cross_decomposition.PLSCanonical"><code class="xref py py-class docutils literal notranslate"><span class="pre">cross_decomposition.PLSCanonical</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.cross_decomposition.PLSRegression.html#sklearn.cross_decomposition.PLSRegression" title="sklearn.cross_decomposition.PLSRegression"><code class="xref py py-class docutils literal notranslate"><span class="pre">cross_decomposition.PLSRegression</span></code></a> have a new function
<code class="docutils literal notranslate"><span class="pre">inverse_transform</span></code> to transform data to the original space.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15304">#15304</a> by <a class="reference external" href="https://github.com/jiwidi">Jaime Ferrando Huertas</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.decomposition.KernelPCA.html#sklearn.decomposition.KernelPCA" title="sklearn.decomposition.KernelPCA"><code class="xref py py-class docutils literal notranslate"><span class="pre">decomposition.KernelPCA</span></code></a> now properly checks the
eigenvalues found by the solver for numerical or conditioning issues. This
ensures consistency of results across solvers (different choices for
<code class="docutils literal notranslate"><span class="pre">eigen_solver</span></code>), including approximate solvers such as <code class="docutils literal notranslate"><span class="pre">'randomized'</span></code> and
<code class="docutils literal notranslate"><span class="pre">'lobpcg'</span></code> (see <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/12068">#12068</a>).
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/12145">#12145</a> by <a class="reference external" href="https://github.com/smarie">Sylvain Marié</a></p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug where <a class="reference internal" href="../modules/generated/sklearn.cross_decomposition.PLSCanonical.html#sklearn.cross_decomposition.PLSCanonical" title="sklearn.cross_decomposition.PLSCanonical"><code class="xref py py-class docutils literal notranslate"><span class="pre">cross_decomposition.PLSCanonical</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.cross_decomposition.PLSRegression.html#sklearn.cross_decomposition.PLSRegression" title="sklearn.cross_decomposition.PLSRegression"><code class="xref py py-class docutils literal notranslate"><span class="pre">cross_decomposition.PLSRegression</span></code></a> were raising an error when fitted
with a target matrix <code class="docutils literal notranslate"><span class="pre">Y</span></code> in which the first column was constant.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/13609">#13609</a> by <a class="reference external" href="https://github.com/camilaagw">Camila Williamson</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.cross_decomposition.CCA.html#sklearn.cross_decomposition.CCA" title="sklearn.cross_decomposition.CCA"><code class="xref py py-class docutils literal notranslate"><span class="pre">cross_decomposition.CCA</span></code></a> now produces the same results with
scipy 1.3 and previous scipy versions. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15661">#15661</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-datasets">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.datasets" title="sklearn.datasets"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.datasets</span></code></a><a class="headerlink" href="#sklearn-datasets" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.datasets.fetch_openml.html#sklearn.datasets.fetch_openml" title="sklearn.datasets.fetch_openml"><code class="xref py py-func docutils literal notranslate"><span class="pre">datasets.fetch_openml</span></code></a> now supports heterogeneous data using
pandas by setting <code class="docutils literal notranslate"><span class="pre">as_frame=True</span></code>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13902">#13902</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.datasets.fetch_openml.html#sklearn.datasets.fetch_openml" title="sklearn.datasets.fetch_openml"><code class="xref py py-func docutils literal notranslate"><span class="pre">datasets.fetch_openml</span></code></a> now includes the <code class="docutils literal notranslate"><span class="pre">target_names</span></code> in
the returned Bunch. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15160">#15160</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  The parameter <code class="docutils literal notranslate"><span class="pre">return_X_y</span></code> was added to
<a class="reference internal" href="../modules/generated/sklearn.datasets.fetch_20newsgroups.html#sklearn.datasets.fetch_20newsgroups" title="sklearn.datasets.fetch_20newsgroups"><code class="xref py py-func docutils literal notranslate"><span class="pre">datasets.fetch_20newsgroups</span></code></a> and <a class="reference internal" href="../modules/generated/sklearn.datasets.fetch_olivetti_faces.html#sklearn.datasets.fetch_olivetti_faces" title="sklearn.datasets.fetch_olivetti_faces"><code class="xref py py-func docutils literal notranslate"><span class="pre">datasets.fetch_olivetti_faces</span></code></a>
. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14259">#14259</a> by <a class="reference external" href="https://github.com/souravsingh">Sourav Singh</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.datasets.make_classification.html#sklearn.datasets.make_classification" title="sklearn.datasets.make_classification"><code class="xref py py-func docutils literal notranslate"><span class="pre">datasets.make_classification</span></code></a> now accepts array-like
<code class="docutils literal notranslate"><span class="pre">weights</span></code> parameter, i.e. list or numpy.array, instead of list only.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14764">#14764</a> by <a class="reference external" href="https://github.com/CatChenal">Cat Chenal</a>.</p></li>
<li><dl class="simple">
<dt><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  The parameter <code class="docutils literal notranslate"><span class="pre">normalize</span></code> was added to</dt><dd><p><a class="reference internal" href="../modules/generated/sklearn.datasets.fetch_20newsgroups_vectorized.html#sklearn.datasets.fetch_20newsgroups_vectorized" title="sklearn.datasets.fetch_20newsgroups_vectorized"><code class="xref py py-func docutils literal notranslate"><span class="pre">datasets.fetch_20newsgroups_vectorized</span></code></a>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14740">#14740</a> by <a class="reference external" href="https://github.com/stephantul">Stéphan Tulkens</a></p>
</dd>
</dl>
</li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug in <a class="reference internal" href="../modules/generated/sklearn.datasets.fetch_openml.html#sklearn.datasets.fetch_openml" title="sklearn.datasets.fetch_openml"><code class="xref py py-func docutils literal notranslate"><span class="pre">datasets.fetch_openml</span></code></a>, which failed to load
an OpenML dataset that contains an ignored feature.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14623">#14623</a> by <a class="reference external" href="https://github.com/HabchiSarra">Sarra Habchi</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-decomposition">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.decomposition" title="sklearn.decomposition"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.decomposition</span></code></a><a class="headerlink" href="#sklearn-decomposition" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-info">Efficiency</span></span>  <code class="xref py py-class docutils literal notranslate"><span class="pre">decomposition.NMF(solver='mu')</span></code> fitted on sparse input
matrices now uses batching to avoid briefly allocating an array with size
(#non-zero elements, n_components). <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15257">#15257</a> by <a class="reference external" href="Maocx">Mart Willocx</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.decomposition.dict_learning.html#sklearn.decomposition.dict_learning" title="sklearn.decomposition.dict_learning"><code class="xref py py-func docutils literal notranslate"><span class="pre">decomposition.dict_learning</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.decomposition.dict_learning_online.html#sklearn.decomposition.dict_learning_online" title="sklearn.decomposition.dict_learning_online"><code class="xref py py-func docutils literal notranslate"><span class="pre">decomposition.dict_learning_online</span></code></a> now accept <code class="docutils literal notranslate"><span class="pre">method_max_iter</span></code> and
pass it to <a class="reference internal" href="../modules/generated/sklearn.decomposition.sparse_encode.html#sklearn.decomposition.sparse_encode" title="sklearn.decomposition.sparse_encode"><code class="xref py py-meth docutils literal notranslate"><span class="pre">decomposition.sparse_encode</span></code></a>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/12650">#12650</a> by <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.decomposition.SparseCoder.html#sklearn.decomposition.SparseCoder" title="sklearn.decomposition.SparseCoder"><code class="xref py py-class docutils literal notranslate"><span class="pre">decomposition.SparseCoder</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.decomposition.DictionaryLearning.html#sklearn.decomposition.DictionaryLearning" title="sklearn.decomposition.DictionaryLearning"><code class="xref py py-class docutils literal notranslate"><span class="pre">decomposition.DictionaryLearning</span></code></a>, and
<a class="reference internal" href="../modules/generated/sklearn.decomposition.MiniBatchDictionaryLearning.html#sklearn.decomposition.MiniBatchDictionaryLearning" title="sklearn.decomposition.MiniBatchDictionaryLearning"><code class="xref py py-class docutils literal notranslate"><span class="pre">decomposition.MiniBatchDictionaryLearning</span></code></a> now take a
<code class="docutils literal notranslate"><span class="pre">transform_max_iter</span></code> parameter and pass it to either
<a class="reference internal" href="../modules/generated/sklearn.decomposition.dict_learning.html#sklearn.decomposition.dict_learning" title="sklearn.decomposition.dict_learning"><code class="xref py py-func docutils literal notranslate"><span class="pre">decomposition.dict_learning</span></code></a> or
<a class="reference internal" href="../modules/generated/sklearn.decomposition.sparse_encode.html#sklearn.decomposition.sparse_encode" title="sklearn.decomposition.sparse_encode"><code class="xref py py-func docutils literal notranslate"><span class="pre">decomposition.sparse_encode</span></code></a>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/12650">#12650</a> by <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.decomposition.IncrementalPCA.html#sklearn.decomposition.IncrementalPCA" title="sklearn.decomposition.IncrementalPCA"><code class="xref py py-class docutils literal notranslate"><span class="pre">decomposition.IncrementalPCA</span></code></a> now accepts sparse
matrices as input, converting them to dense in batches thereby avoiding the
need to store the entire dense matrix at once.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13960">#13960</a> by <a class="reference external" href="https://github.com/scottgigante">Scott Gigante</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.decomposition.sparse_encode.html#sklearn.decomposition.sparse_encode" title="sklearn.decomposition.sparse_encode"><code class="xref py py-func docutils literal notranslate"><span class="pre">decomposition.sparse_encode</span></code></a> now passes the <code class="docutils literal notranslate"><span class="pre">max_iter</span></code> to the
underlying <a class="reference internal" href="../modules/generated/sklearn.linear_model.LassoLars.html#sklearn.linear_model.LassoLars" title="sklearn.linear_model.LassoLars"><code class="xref py py-class docutils literal notranslate"><span class="pre">linear_model.LassoLars</span></code></a> when <code class="docutils literal notranslate"><span class="pre">algorithm='lasso_lars'</span></code>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/12650">#12650</a> by <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-dummy">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.dummy" title="sklearn.dummy"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.dummy</span></code></a><a class="headerlink" href="#sklearn-dummy" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.dummy.DummyClassifier.html#sklearn.dummy.DummyClassifier" title="sklearn.dummy.DummyClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">dummy.DummyClassifier</span></code></a> now handles checking the existence
of the provided constant in multiouput cases.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14908">#14908</a> by <a class="reference external" href="https://github.com/martinagvilas">Martina G. Vilas</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  The default value of the <code class="docutils literal notranslate"><span class="pre">strategy</span></code> parameter in
<a class="reference internal" href="../modules/generated/sklearn.dummy.DummyClassifier.html#sklearn.dummy.DummyClassifier" title="sklearn.dummy.DummyClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">dummy.DummyClassifier</span></code></a> will change from <code class="docutils literal notranslate"><span class="pre">'stratified'</span></code> in version
0.22 to <code class="docutils literal notranslate"><span class="pre">'prior'</span></code> in 0.24. A FutureWarning is raised when the default value
is used. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15382">#15382</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  The <code class="docutils literal notranslate"><span class="pre">outputs_2d_</span></code> attribute is deprecated in
<a class="reference internal" href="../modules/generated/sklearn.dummy.DummyClassifier.html#sklearn.dummy.DummyClassifier" title="sklearn.dummy.DummyClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">dummy.DummyClassifier</span></code></a> and <a class="reference internal" href="../modules/generated/sklearn.dummy.DummyRegressor.html#sklearn.dummy.DummyRegressor" title="sklearn.dummy.DummyRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">dummy.DummyRegressor</span></code></a>. It is
equivalent to <code class="docutils literal notranslate"><span class="pre">n_outputs</span> <span class="pre">&gt;</span> <span class="pre">1</span></code>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14933">#14933</a> by <a class="reference external" href="https://github.com/NicolasHug">Nicolas Hug</a></p></li>
</ul>
</div>
<div class="section" id="sklearn-ensemble">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.ensemble" title="sklearn.ensemble"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.ensemble</span></code></a><a class="headerlink" href="#sklearn-ensemble" title="Permalink to this headline">¶</a></h3>
<ul>
<li><p><span class="raw-html"><span class="badge badge-success">Major Feature</span></span>  Added <a class="reference internal" href="../modules/generated/sklearn.ensemble.StackingClassifier.html#sklearn.ensemble.StackingClassifier" title="sklearn.ensemble.StackingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.StackingClassifier</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.ensemble.StackingRegressor.html#sklearn.ensemble.StackingRegressor" title="sklearn.ensemble.StackingRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.StackingRegressor</span></code></a> to stack predictors using a final
classifier or regressor.  <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/11047">#11047</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a> and <a class="reference external" href="https://github.com/caioaao">Caio Oliveira</a> and <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15138">#15138</a> by
<a class="reference external" href="https://github.com/jcusick13">Jon Cusick</a>..</p></li>
<li><p>Many improvements were made to
<a class="reference internal" href="../modules/generated/sklearn.ensemble.HistGradientBoostingClassifier.html#sklearn.ensemble.HistGradientBoostingClassifier" title="sklearn.ensemble.HistGradientBoostingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.HistGradientBoostingClassifier</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.ensemble.HistGradientBoostingRegressor.html#sklearn.ensemble.HistGradientBoostingRegressor" title="sklearn.ensemble.HistGradientBoostingRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.HistGradientBoostingRegressor</span></code></a>:</p>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Major Feature</span></span>  Estimators now natively support dense data with missing
values both for training and predicting. They also support infinite
values. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13911">#13911</a> and <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14406">#14406</a> by <a class="reference external" href="https://github.com/NicolasHug">Nicolas Hug</a>, <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>
and <a class="reference external" href="https://twitter.com/ogrisel">Olivier Grisel</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  Estimators now have an additional <code class="docutils literal notranslate"><span class="pre">warm_start</span></code> parameter that
enables warm starting. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14012">#14012</a> by <a class="reference external" href="https://github.com/johannfaouzi">Johann Faouzi</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.inspection.partial_dependence.html#sklearn.inspection.partial_dependence" title="sklearn.inspection.partial_dependence"><code class="xref py py-func docutils literal notranslate"><span class="pre">inspection.partial_dependence</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.inspection.plot_partial_dependence.html#sklearn.inspection.plot_partial_dependence" title="sklearn.inspection.plot_partial_dependence"><code class="xref py py-func docutils literal notranslate"><span class="pre">inspection.plot_partial_dependence</span></code></a> now support the fast ‘recursion’
method for both estimators. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13769">#13769</a> by <a class="reference external" href="https://github.com/NicolasHug">Nicolas Hug</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  for <a class="reference internal" href="../modules/generated/sklearn.ensemble.HistGradientBoostingClassifier.html#sklearn.ensemble.HistGradientBoostingClassifier" title="sklearn.ensemble.HistGradientBoostingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.HistGradientBoostingClassifier</span></code></a> the
training loss or score is now monitored on a class-wise stratified
subsample to preserve the class balance of the original training set.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14194">#14194</a> by <a class="reference external" href="https://github.com/johannfaouzi">Johann Faouzi</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.ensemble.HistGradientBoostingRegressor.html#sklearn.ensemble.HistGradientBoostingRegressor" title="sklearn.ensemble.HistGradientBoostingRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.HistGradientBoostingRegressor</span></code></a> now supports
the ‘least_absolute_deviation’ loss. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13896">#13896</a> by <a class="reference external" href="https://github.com/NicolasHug">Nicolas Hug</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Estimators now bin the training and validation data separately to
avoid any data leak. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13933">#13933</a> by <a class="reference external" href="https://github.com/NicolasHug">Nicolas Hug</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug where early stopping would break with string targets.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14710">#14710</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.ensemble.HistGradientBoostingClassifier.html#sklearn.ensemble.HistGradientBoostingClassifier" title="sklearn.ensemble.HistGradientBoostingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.HistGradientBoostingClassifier</span></code></a> now raises an error
if <code class="docutils literal notranslate"><span class="pre">categorical_crossentropy</span></code> loss is given for a binary classification
problem. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14869">#14869</a> by <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>.</p></li>
</ul>
<p>Note that pickles from 0.21 will not work in 0.22.</p>
</li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  Addition of <code class="docutils literal notranslate"><span class="pre">max_samples</span></code> argument allows limiting
size of bootstrap samples to be less than size of dataset. Added to
<a class="reference internal" href="../modules/generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier" title="sklearn.ensemble.RandomForestClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.RandomForestClassifier</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor" title="sklearn.ensemble.RandomForestRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.RandomForestRegressor</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.ensemble.ExtraTreesClassifier.html#sklearn.ensemble.ExtraTreesClassifier" title="sklearn.ensemble.ExtraTreesClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.ExtraTreesClassifier</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.ensemble.ExtraTreesRegressor.html#sklearn.ensemble.ExtraTreesRegressor" title="sklearn.ensemble.ExtraTreesRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.ExtraTreesRegressor</span></code></a>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14682">#14682</a> by
<a class="reference external" href="https://github.com/notmatthancock">Matt Hancock</a> and
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/5963">#5963</a> by <a class="reference external" href="https://github.com/DrDub">Pablo Duboue</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.ensemble.VotingClassifier.html#sklearn.ensemble.VotingClassifier.predict_proba" title="sklearn.ensemble.VotingClassifier.predict_proba"><code class="xref py py-func docutils literal notranslate"><span class="pre">ensemble.VotingClassifier.predict_proba</span></code></a> will no longer be
present when <code class="docutils literal notranslate"><span class="pre">voting='hard'</span></code>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14287">#14287</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  The <code class="docutils literal notranslate"><span class="pre">named_estimators_</span></code> attribute in <a class="reference internal" href="../modules/generated/sklearn.ensemble.VotingClassifier.html#sklearn.ensemble.VotingClassifier" title="sklearn.ensemble.VotingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.VotingClassifier</span></code></a>
and <a class="reference internal" href="../modules/generated/sklearn.ensemble.VotingRegressor.html#sklearn.ensemble.VotingRegressor" title="sklearn.ensemble.VotingRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.VotingRegressor</span></code></a> now correctly maps to dropped estimators.
Previously, the <code class="docutils literal notranslate"><span class="pre">named_estimators_</span></code> mapping was incorrect whenever one of the
estimators was dropped. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15375">#15375</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Run by default
<a class="reference internal" href="../modules/generated/sklearn.utils.estimator_checks.check_estimator.html#sklearn.utils.estimator_checks.check_estimator" title="sklearn.utils.estimator_checks.check_estimator"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.estimator_checks.check_estimator</span></code></a> on both
<a class="reference internal" href="../modules/generated/sklearn.ensemble.VotingClassifier.html#sklearn.ensemble.VotingClassifier" title="sklearn.ensemble.VotingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.VotingClassifier</span></code></a> and <a class="reference internal" href="../modules/generated/sklearn.ensemble.VotingRegressor.html#sklearn.ensemble.VotingRegressor" title="sklearn.ensemble.VotingRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.VotingRegressor</span></code></a>. It
leads to solve issues regarding shape consistency during <code class="docutils literal notranslate"><span class="pre">predict</span></code> which was
failing when the underlying estimators were not outputting consistent array
dimensions. Note that it should be replaced by refactoring the common tests
in the future.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14305">#14305</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.ensemble.AdaBoostClassifier.html#sklearn.ensemble.AdaBoostClassifier" title="sklearn.ensemble.AdaBoostClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.AdaBoostClassifier</span></code></a> computes probabilities based on
the decision function as in the literature. Thus, <code class="docutils literal notranslate"><span class="pre">predict</span></code> and
<code class="docutils literal notranslate"><span class="pre">predict_proba</span></code> give consistent results.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14114">#14114</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Stacking and Voting estimators now ensure that their underlying
estimators are either all classifiers or all regressors.
<a class="reference internal" href="../modules/generated/sklearn.ensemble.StackingClassifier.html#sklearn.ensemble.StackingClassifier" title="sklearn.ensemble.StackingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.StackingClassifier</span></code></a>, <a class="reference internal" href="../modules/generated/sklearn.ensemble.StackingRegressor.html#sklearn.ensemble.StackingRegressor" title="sklearn.ensemble.StackingRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.StackingRegressor</span></code></a>,
and <a class="reference internal" href="../modules/generated/sklearn.ensemble.VotingClassifier.html#sklearn.ensemble.VotingClassifier" title="sklearn.ensemble.VotingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.VotingClassifier</span></code></a> and <code class="xref py py-class docutils literal notranslate"><span class="pre">VotingRegressor</span></code>
now raise consistent error messages.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15084">#15084</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.ensemble.AdaBoostRegressor.html#sklearn.ensemble.AdaBoostRegressor" title="sklearn.ensemble.AdaBoostRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.AdaBoostRegressor</span></code></a> where the loss should be normalized
by the max of the samples with non-null weights only.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14294">#14294</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  <code class="docutils literal notranslate"><span class="pre">presort</span></code> is now deprecated in
<a class="reference internal" href="../modules/generated/sklearn.ensemble.GradientBoostingClassifier.html#sklearn.ensemble.GradientBoostingClassifier" title="sklearn.ensemble.GradientBoostingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.GradientBoostingClassifier</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.ensemble.GradientBoostingRegressor.html#sklearn.ensemble.GradientBoostingRegressor" title="sklearn.ensemble.GradientBoostingRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.GradientBoostingRegressor</span></code></a>, and the parameter has no effect.
Users are recommended to use <a class="reference internal" href="../modules/generated/sklearn.ensemble.HistGradientBoostingClassifier.html#sklearn.ensemble.HistGradientBoostingClassifier" title="sklearn.ensemble.HistGradientBoostingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.HistGradientBoostingClassifier</span></code></a>
and <a class="reference internal" href="../modules/generated/sklearn.ensemble.HistGradientBoostingRegressor.html#sklearn.ensemble.HistGradientBoostingRegressor" title="sklearn.ensemble.HistGradientBoostingRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.HistGradientBoostingRegressor</span></code></a> instead.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14907">#14907</a> by <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-feature-extraction">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.feature_extraction" title="sklearn.feature_extraction"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.feature_extraction</span></code></a><a class="headerlink" href="#sklearn-feature-extraction" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  A warning  will  now be raised  if a parameter choice means
that another parameter will be unused on calling the fit() method for
<a class="reference internal" href="../modules/generated/sklearn.feature_extraction.text.HashingVectorizer.html#sklearn.feature_extraction.text.HashingVectorizer" title="sklearn.feature_extraction.text.HashingVectorizer"><code class="xref py py-class docutils literal notranslate"><span class="pre">feature_extraction.text.HashingVectorizer</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.feature_extraction.text.CountVectorizer.html#sklearn.feature_extraction.text.CountVectorizer" title="sklearn.feature_extraction.text.CountVectorizer"><code class="xref py py-class docutils literal notranslate"><span class="pre">feature_extraction.text.CountVectorizer</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html#sklearn.feature_extraction.text.TfidfVectorizer" title="sklearn.feature_extraction.text.TfidfVectorizer"><code class="xref py py-class docutils literal notranslate"><span class="pre">feature_extraction.text.TfidfVectorizer</span></code></a>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14602">#14602</a> by <a class="reference external" href="https://github.com/getgaurav2">Gaurav Chawla</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Functions created by <code class="docutils literal notranslate"><span class="pre">build_preprocessor</span></code> and <code class="docutils literal notranslate"><span class="pre">build_analyzer</span></code> of
<code class="xref py py-class docutils literal notranslate"><span class="pre">feature_extraction.text.VectorizerMixin</span></code> can now be pickled.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14430">#14430</a> by <a class="reference external" href="https://github.com/deniederhut">Dillon Niederhut</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <code class="xref py py-func docutils literal notranslate"><span class="pre">feature_extraction.text.strip_accents_unicode</span></code> now correctly
removes accents from strings that are in NFKD normalized form. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15100">#15100</a> by
<a class="reference external" href="https://github.com/DGrady">Daniel Grady</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug that caused <a class="reference internal" href="../modules/generated/sklearn.feature_extraction.DictVectorizer.html#sklearn.feature_extraction.DictVectorizer" title="sklearn.feature_extraction.DictVectorizer"><code class="xref py py-class docutils literal notranslate"><span class="pre">feature_extraction.DictVectorizer</span></code></a> to raise
an <code class="docutils literal notranslate"><span class="pre">OverflowError</span></code> during the <code class="docutils literal notranslate"><span class="pre">transform</span></code> operation when producing a <code class="docutils literal notranslate"><span class="pre">scipy.sparse</span></code>
matrix on large input data. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15463">#15463</a> by <a class="reference external" href="https://github.com/norvan">Norvan Sahiner</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  Deprecated unused <code class="docutils literal notranslate"><span class="pre">copy</span></code> param for
<a class="reference internal" href="../modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html#sklearn.feature_extraction.text.TfidfVectorizer.transform" title="sklearn.feature_extraction.text.TfidfVectorizer.transform"><code class="xref py py-meth docutils literal notranslate"><span class="pre">feature_extraction.text.TfidfVectorizer.transform</span></code></a> it will be
removed in v0.24. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14520">#14520</a> by
<a class="reference external" href="https://github.com/guillemgsubies">Guillem G. Subies</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-feature-selection">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.feature_selection" title="sklearn.feature_selection"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.feature_selection</span></code></a><a class="headerlink" href="#sklearn-feature-selection" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  Updated the following <code class="xref py py-mod docutils literal notranslate"><span class="pre">feature_selection</span></code> estimators to allow
NaN/Inf values in <code class="docutils literal notranslate"><span class="pre">transform</span></code> and <code class="docutils literal notranslate"><span class="pre">fit</span></code>:
<a class="reference internal" href="../modules/generated/sklearn.feature_selection.RFE.html#sklearn.feature_selection.RFE" title="sklearn.feature_selection.RFE"><code class="xref py py-class docutils literal notranslate"><span class="pre">feature_selection.RFE</span></code></a>, <a class="reference internal" href="../modules/generated/sklearn.feature_selection.RFECV.html#sklearn.feature_selection.RFECV" title="sklearn.feature_selection.RFECV"><code class="xref py py-class docutils literal notranslate"><span class="pre">feature_selection.RFECV</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.feature_selection.SelectFromModel.html#sklearn.feature_selection.SelectFromModel" title="sklearn.feature_selection.SelectFromModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">feature_selection.SelectFromModel</span></code></a>,
and <a class="reference internal" href="../modules/generated/sklearn.feature_selection.VarianceThreshold.html#sklearn.feature_selection.VarianceThreshold" title="sklearn.feature_selection.VarianceThreshold"><code class="xref py py-class docutils literal notranslate"><span class="pre">feature_selection.VarianceThreshold</span></code></a>. Note that if the underlying
estimator of the feature selector does not allow NaN/Inf then it will still
error, but the feature selectors themselves no longer enforce this
restriction unnecessarily. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/11635">#11635</a> by <a class="reference external" href="https://github.com/adpeters">Alec Peters</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug where <a class="reference internal" href="../modules/generated/sklearn.feature_selection.VarianceThreshold.html#sklearn.feature_selection.VarianceThreshold" title="sklearn.feature_selection.VarianceThreshold"><code class="xref py py-class docutils literal notranslate"><span class="pre">feature_selection.VarianceThreshold</span></code></a> with
<code class="docutils literal notranslate"><span class="pre">threshold=0</span></code> did not remove constant features due to numerical instability,
by using range rather than variance in this case.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13704">#13704</a> by <a class="reference external" href="https://github.com/rlms">Roddy MacSween</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-gaussian-process">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.gaussian_process" title="sklearn.gaussian_process"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.gaussian_process</span></code></a><a class="headerlink" href="#sklearn-gaussian-process" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.gaussian_process.GaussianProcessClassifier.html#sklearn.gaussian_process.GaussianProcessClassifier.log_marginal_likelihood" title="sklearn.gaussian_process.GaussianProcessClassifier.log_marginal_likelihood"><code class="xref py py-func docutils literal notranslate"><span class="pre">gaussian_process.GaussianProcessClassifier.log_marginal_likelihood</span></code></a>
and <a class="reference internal" href="../modules/generated/sklearn.gaussian_process.GaussianProcessRegressor.html#sklearn.gaussian_process.GaussianProcessRegressor.log_marginal_likelihood" title="sklearn.gaussian_process.GaussianProcessRegressor.log_marginal_likelihood"><code class="xref py py-func docutils literal notranslate"><span class="pre">gaussian_process.GaussianProcessRegressor.log_marginal_likelihood</span></code></a> now
accept a <code class="docutils literal notranslate"><span class="pre">clone_kernel=True</span></code> keyword argument. When set to <code class="docutils literal notranslate"><span class="pre">False</span></code>,
the kernel attribute is modified, but may result in a performance improvement.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14378">#14378</a> by <a class="reference external" href="https://github.com/c-bata">Masashi Shibata</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  Gaussian process models on structured data: <a class="reference internal" href="../modules/generated/sklearn.gaussian_process.GaussianProcessRegressor.html#sklearn.gaussian_process.GaussianProcessRegressor" title="sklearn.gaussian_process.GaussianProcessRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">gaussian_process.GaussianProcessRegressor</span></code></a>
and <a class="reference internal" href="../modules/generated/sklearn.gaussian_process.GaussianProcessClassifier.html#sklearn.gaussian_process.GaussianProcessClassifier" title="sklearn.gaussian_process.GaussianProcessClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">gaussian_process.GaussianProcessClassifier</span></code></a> can now accept a list
of generic objects (e.g. strings, trees, graphs, etc.) as the <code class="docutils literal notranslate"><span class="pre">X</span></code> argument
to their training/prediction methods.
A user-defined kernel should be provided for computing the kernel matrix among
the generic objects, and should inherit from <code class="xref py py-class docutils literal notranslate"><span class="pre">gaussian_process.kernels.GenericKernelMixin</span></code>
to notify the GPR/GPC model that it handles non-vectorial samples.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15557">#15557</a> by <a class="reference external" href="https://github.com/yhtang">Yu-Hang Tang</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  From version 0.24 <a class="reference internal" href="../modules/generated/sklearn.gaussian_process.kernels.Kernel.html#sklearn.gaussian_process.kernels.Kernel.get_params" title="sklearn.gaussian_process.kernels.Kernel.get_params"><code class="xref py py-meth docutils literal notranslate"><span class="pre">gaussian_process.kernels.Kernel.get_params</span></code></a> will raise an
<code class="docutils literal notranslate"><span class="pre">AttributeError</span></code> rather than return <code class="docutils literal notranslate"><span class="pre">None</span></code> for parameters that are in the
estimator’s constructor but not stored as attributes on the instance.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14464">#14464</a> by <a class="reference external" href="https://joelnothman.com/">Joel Nothman</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-impute">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.impute" title="sklearn.impute"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.impute</span></code></a><a class="headerlink" href="#sklearn-impute" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Major Feature</span></span>  Added <a class="reference internal" href="../modules/generated/sklearn.impute.KNNImputer.html#sklearn.impute.KNNImputer" title="sklearn.impute.KNNImputer"><code class="xref py py-class docutils literal notranslate"><span class="pre">impute.KNNImputer</span></code></a>, to impute missing values using
k-Nearest Neighbors. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/12852">#12852</a> by <a class="reference external" href="https://github.com/ashimb9">Ashim Bhattarai</a> and
<a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a> and <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15010">#15010</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.impute.IterativeImputer.html#sklearn.impute.IterativeImputer" title="sklearn.impute.IterativeImputer"><code class="xref py py-class docutils literal notranslate"><span class="pre">impute.IterativeImputer</span></code></a> has new <code class="docutils literal notranslate"><span class="pre">skip_compute</span></code> flag that
is False by default, which, when True, will skip computation on features that
have no missing values during the fit phase. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/13773">#13773</a> by
<a class="reference external" href="https://github.com/sergeyf">Sergey Feldman</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Efficiency</span></span>  <a class="reference internal" href="../modules/generated/sklearn.impute.MissingIndicator.html#sklearn.impute.MissingIndicator.fit_transform" title="sklearn.impute.MissingIndicator.fit_transform"><code class="xref py py-meth docutils literal notranslate"><span class="pre">impute.MissingIndicator.fit_transform</span></code></a> avoid repeated
computation of the masked matrix. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14356">#14356</a> by <a class="reference external" href="https://github.com/harsh020">Harsh Soni</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.impute.IterativeImputer.html#sklearn.impute.IterativeImputer" title="sklearn.impute.IterativeImputer"><code class="xref py py-class docutils literal notranslate"><span class="pre">impute.IterativeImputer</span></code></a> now works when there is only one feature.
By <a class="reference external" href="https://github.com/sergeyf">Sergey Feldman</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug in <a class="reference internal" href="../modules/generated/sklearn.impute.IterativeImputer.html#sklearn.impute.IterativeImputer" title="sklearn.impute.IterativeImputer"><code class="xref py py-class docutils literal notranslate"><span class="pre">impute.IterativeImputer</span></code></a> where features where
imputed in the reverse desired order with <code class="docutils literal notranslate"><span class="pre">imputation_order</span></code> either
<code class="docutils literal notranslate"><span class="pre">&quot;ascending&quot;</span></code> or <code class="docutils literal notranslate"><span class="pre">&quot;descending&quot;</span></code>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15393">#15393</a> by
<a class="reference external" href="https://github.com/venkyyuvy">Venkatachalam N</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-inspection">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.inspection" title="sklearn.inspection"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.inspection</span></code></a><a class="headerlink" href="#sklearn-inspection" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Major Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.inspection.permutation_importance.html#sklearn.inspection.permutation_importance" title="sklearn.inspection.permutation_importance"><code class="xref py py-func docutils literal notranslate"><span class="pre">inspection.permutation_importance</span></code></a> has been added to
measure the importance of each feature in an arbitrary trained model with
respect to a given scoring function. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/13146">#13146</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.inspection.partial_dependence.html#sklearn.inspection.partial_dependence" title="sklearn.inspection.partial_dependence"><code class="xref py py-func docutils literal notranslate"><span class="pre">inspection.partial_dependence</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.inspection.plot_partial_dependence.html#sklearn.inspection.plot_partial_dependence" title="sklearn.inspection.plot_partial_dependence"><code class="xref py py-func docutils literal notranslate"><span class="pre">inspection.plot_partial_dependence</span></code></a> now support the fast ‘recursion’
method for <a class="reference internal" href="../modules/generated/sklearn.ensemble.HistGradientBoostingClassifier.html#sklearn.ensemble.HistGradientBoostingClassifier" title="sklearn.ensemble.HistGradientBoostingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.HistGradientBoostingClassifier</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.ensemble.HistGradientBoostingRegressor.html#sklearn.ensemble.HistGradientBoostingRegressor" title="sklearn.ensemble.HistGradientBoostingRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.HistGradientBoostingRegressor</span></code></a>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13769">#13769</a> by
<a class="reference external" href="https://github.com/NicolasHug">Nicolas Hug</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.inspection.plot_partial_dependence.html#sklearn.inspection.plot_partial_dependence" title="sklearn.inspection.plot_partial_dependence"><code class="xref py py-func docutils literal notranslate"><span class="pre">inspection.plot_partial_dependence</span></code></a> has been extended to
now support the new visualization API described in the <a class="reference internal" href="../visualizations.html#visualizations"><span class="std std-ref">User Guide</span></a>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14646">#14646</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.inspection.partial_dependence.html#sklearn.inspection.partial_dependence" title="sklearn.inspection.partial_dependence"><code class="xref py py-func docutils literal notranslate"><span class="pre">inspection.partial_dependence</span></code></a> accepts pandas DataFrame
and <a class="reference internal" href="../modules/generated/sklearn.pipeline.Pipeline.html#sklearn.pipeline.Pipeline" title="sklearn.pipeline.Pipeline"><code class="xref py py-class docutils literal notranslate"><span class="pre">pipeline.Pipeline</span></code></a> containing <a class="reference internal" href="../modules/generated/sklearn.compose.ColumnTransformer.html#sklearn.compose.ColumnTransformer" title="sklearn.compose.ColumnTransformer"><code class="xref py py-class docutils literal notranslate"><span class="pre">compose.ColumnTransformer</span></code></a>.
In addition <a class="reference internal" href="../modules/generated/sklearn.inspection.plot_partial_dependence.html#sklearn.inspection.plot_partial_dependence" title="sklearn.inspection.plot_partial_dependence"><code class="xref py py-func docutils literal notranslate"><span class="pre">inspection.plot_partial_dependence</span></code></a> will use the column
names by default when a dataframe is passed.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14028">#14028</a> and <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15429">#15429</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-kernel-approximation">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.kernel_approximation" title="sklearn.kernel_approximation"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.kernel_approximation</span></code></a><a class="headerlink" href="#sklearn-kernel-approximation" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug where <a class="reference internal" href="../modules/generated/sklearn.kernel_approximation.Nystroem.html#sklearn.kernel_approximation.Nystroem" title="sklearn.kernel_approximation.Nystroem"><code class="xref py py-class docutils literal notranslate"><span class="pre">kernel_approximation.Nystroem</span></code></a> raised a
<code class="docutils literal notranslate"><span class="pre">KeyError</span></code> when using <code class="docutils literal notranslate"><span class="pre">kernel=&quot;precomputed&quot;</span></code>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14706">#14706</a> by <a class="reference external" href="https://github.com/venkyyuvy">Venkatachalam N</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-linear-model">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.linear_model" title="sklearn.linear_model"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.linear_model</span></code></a><a class="headerlink" href="#sklearn-linear-model" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-info">Efficiency</span></span>  The ‘liblinear’ logistic regression solver is now faster and
requires less memory.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14108">#14108</a>, <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14170">#14170</a>, <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14296">#14296</a> by <a class="reference external" href="https://github.com/alexhenrie">Alex Henrie</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.linear_model.BayesianRidge.html#sklearn.linear_model.BayesianRidge" title="sklearn.linear_model.BayesianRidge"><code class="xref py py-class docutils literal notranslate"><span class="pre">linear_model.BayesianRidge</span></code></a> now accepts hyperparameters
<code class="docutils literal notranslate"><span class="pre">alpha_init</span></code> and <code class="docutils literal notranslate"><span class="pre">lambda_init</span></code> which can be used to set the initial value
of the maximization procedure in <a class="reference internal" href="../glossary.html#term-fit"><span class="xref std std-term">fit</span></a>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13618">#13618</a> by <a class="reference external" href="https://github.com/c56pony">Yoshihiro Uchida</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.linear_model.Ridge.html#sklearn.linear_model.Ridge" title="sklearn.linear_model.Ridge"><code class="xref py py-class docutils literal notranslate"><span class="pre">linear_model.Ridge</span></code></a> now correctly fits an intercept when <code class="docutils literal notranslate"><span class="pre">X</span></code> is
sparse, <code class="docutils literal notranslate"><span class="pre">solver=&quot;auto&quot;</span></code> and <code class="docutils literal notranslate"><span class="pre">fit_intercept=True</span></code>, because the default solver
in this configuration has changed to <code class="docutils literal notranslate"><span class="pre">sparse_cg</span></code>, which can fit an intercept
with sparse data. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13995">#13995</a> by <a class="reference external" href="https://github.com/jeromedockes">Jérôme Dockès</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.linear_model.Ridge.html#sklearn.linear_model.Ridge" title="sklearn.linear_model.Ridge"><code class="xref py py-class docutils literal notranslate"><span class="pre">linear_model.Ridge</span></code></a> with <code class="docutils literal notranslate"><span class="pre">solver='sag'</span></code> now accepts F-ordered
and non-contiguous arrays and makes a conversion instead of failing.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14458">#14458</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.linear_model.LassoCV.html#sklearn.linear_model.LassoCV" title="sklearn.linear_model.LassoCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">linear_model.LassoCV</span></code></a> no longer forces <code class="docutils literal notranslate"><span class="pre">precompute=False</span></code>
when fitting the final model. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14591">#14591</a> by <a class="reference external" href="https://amueller.github.io/">Andreas Müller</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.linear_model.RidgeCV.html#sklearn.linear_model.RidgeCV" title="sklearn.linear_model.RidgeCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">linear_model.RidgeCV</span></code></a> and <a class="reference internal" href="../modules/generated/sklearn.linear_model.RidgeClassifierCV.html#sklearn.linear_model.RidgeClassifierCV" title="sklearn.linear_model.RidgeClassifierCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">linear_model.RidgeClassifierCV</span></code></a>
now correctly scores when <code class="docutils literal notranslate"><span class="pre">cv=None</span></code>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14864">#14864</a> by <a class="reference external" href="https://github.com/venkyyuvy">Venkatachalam N</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug in <a class="reference internal" href="../modules/generated/sklearn.linear_model.LogisticRegressionCV.html#sklearn.linear_model.LogisticRegressionCV" title="sklearn.linear_model.LogisticRegressionCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">linear_model.LogisticRegressionCV</span></code></a> where the
<code class="docutils literal notranslate"><span class="pre">scores_</span></code>, <code class="docutils literal notranslate"><span class="pre">n_iter_</span></code> and <code class="docutils literal notranslate"><span class="pre">coefs_paths_</span></code> attribute would have a wrong
ordering with <code class="docutils literal notranslate"><span class="pre">penalty='elastic-net'</span></code>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15044">#15044</a> by <a class="reference external" href="https://github.com/NicolasHug">Nicolas Hug</a></p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.linear_model.MultiTaskLassoCV.html#sklearn.linear_model.MultiTaskLassoCV" title="sklearn.linear_model.MultiTaskLassoCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">linear_model.MultiTaskLassoCV</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.linear_model.MultiTaskElasticNetCV.html#sklearn.linear_model.MultiTaskElasticNetCV" title="sklearn.linear_model.MultiTaskElasticNetCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">linear_model.MultiTaskElasticNetCV</span></code></a> with X of dtype int
and <code class="docutils literal notranslate"><span class="pre">fit_intercept=True</span></code>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15086">#15086</a> by <a class="reference external" href="https://github.com/agramfort">Alex Gramfort</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  The liblinear solver now supports <code class="docutils literal notranslate"><span class="pre">sample_weight</span></code>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15038">#15038</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-manifold">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.manifold" title="sklearn.manifold"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.manifold</span></code></a><a class="headerlink" href="#sklearn-manifold" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.manifold.Isomap.html#sklearn.manifold.Isomap" title="sklearn.manifold.Isomap"><code class="xref py py-class docutils literal notranslate"><span class="pre">manifold.Isomap</span></code></a>, <a class="reference internal" href="../modules/generated/sklearn.manifold.TSNE.html#sklearn.manifold.TSNE" title="sklearn.manifold.TSNE"><code class="xref py py-class docutils literal notranslate"><span class="pre">manifold.TSNE</span></code></a>, and
<a class="reference internal" href="../modules/generated/sklearn.manifold.SpectralEmbedding.html#sklearn.manifold.SpectralEmbedding" title="sklearn.manifold.SpectralEmbedding"><code class="xref py py-class docutils literal notranslate"><span class="pre">manifold.SpectralEmbedding</span></code></a> now accept precomputed sparse
neighbors graph as input. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/10482">#10482</a> by <a class="reference external" href="https://github.com/TomDLT">Tom Dupre la Tour</a> and
<a class="reference external" href="https://github.com/thechargedneutron">Kumar Ashutosh</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  Exposed the <code class="docutils literal notranslate"><span class="pre">n_jobs</span></code> parameter in <a class="reference internal" href="../modules/generated/sklearn.manifold.TSNE.html#sklearn.manifold.TSNE" title="sklearn.manifold.TSNE"><code class="xref py py-class docutils literal notranslate"><span class="pre">manifold.TSNE</span></code></a> for
multi-core calculation of the neighbors graph. This parameter has no
impact when <code class="docutils literal notranslate"><span class="pre">metric=&quot;precomputed&quot;</span></code> or (<code class="docutils literal notranslate"><span class="pre">metric=&quot;euclidean&quot;</span></code> and
<code class="docutils literal notranslate"><span class="pre">method=&quot;exact&quot;</span></code>). <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/15082">#15082</a> by <a class="reference external" href="https://github.com/rth">Roman Yurchak</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Efficiency</span></span>  Improved efficiency of <a class="reference internal" href="../modules/generated/sklearn.manifold.TSNE.html#sklearn.manifold.TSNE" title="sklearn.manifold.TSNE"><code class="xref py py-class docutils literal notranslate"><span class="pre">manifold.TSNE</span></code></a> when
<code class="docutils literal notranslate"><span class="pre">method=&quot;barnes-hut&quot;</span></code> by computing the gradient in parallel.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13213">#13213</a> by <a class="reference external" href="https://github.com/tommoral">Thomas Moreau</a></p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug where <a class="reference internal" href="../modules/generated/sklearn.manifold.spectral_embedding.html#sklearn.manifold.spectral_embedding" title="sklearn.manifold.spectral_embedding"><code class="xref py py-func docutils literal notranslate"><span class="pre">manifold.spectral_embedding</span></code></a> (and therefore
<a class="reference internal" href="../modules/generated/sklearn.manifold.SpectralEmbedding.html#sklearn.manifold.SpectralEmbedding" title="sklearn.manifold.SpectralEmbedding"><code class="xref py py-class docutils literal notranslate"><span class="pre">manifold.SpectralEmbedding</span></code></a> and <a class="reference internal" href="../modules/generated/sklearn.cluster.SpectralClustering.html#sklearn.cluster.SpectralClustering" title="sklearn.cluster.SpectralClustering"><code class="xref py py-class docutils literal notranslate"><span class="pre">cluster.SpectralClustering</span></code></a>)
computed wrong eigenvalues with <code class="docutils literal notranslate"><span class="pre">eigen_solver='amg'</span></code> when
<code class="docutils literal notranslate"><span class="pre">n_samples</span> <span class="pre">&lt;</span> <span class="pre">5</span> <span class="pre">*</span> <span class="pre">n_components</span></code>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14647">#14647</a> by <a class="reference external" href="https://amueller.github.io/">Andreas Müller</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug in <a class="reference internal" href="../modules/generated/sklearn.manifold.spectral_embedding.html#sklearn.manifold.spectral_embedding" title="sklearn.manifold.spectral_embedding"><code class="xref py py-func docutils literal notranslate"><span class="pre">manifold.spectral_embedding</span></code></a>  used in
<a class="reference internal" href="../modules/generated/sklearn.manifold.SpectralEmbedding.html#sklearn.manifold.SpectralEmbedding" title="sklearn.manifold.SpectralEmbedding"><code class="xref py py-class docutils literal notranslate"><span class="pre">manifold.SpectralEmbedding</span></code></a> and <a class="reference internal" href="../modules/generated/sklearn.cluster.SpectralClustering.html#sklearn.cluster.SpectralClustering" title="sklearn.cluster.SpectralClustering"><code class="xref py py-class docutils literal notranslate"><span class="pre">cluster.SpectralClustering</span></code></a>
where <code class="docutils literal notranslate"><span class="pre">eigen_solver=&quot;amg&quot;</span></code> would sometimes result in a LinAlgError.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/13393">#13393</a> by <a class="reference external" href="https://github.com/lobpcg">Andrew Knyazev</a>
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13707">#13707</a> by <a class="reference external" href="https://github.com/whitews">Scott White</a></p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  Deprecate <code class="docutils literal notranslate"><span class="pre">training_data_</span></code> unused attribute in
<a class="reference internal" href="../modules/generated/sklearn.manifold.Isomap.html#sklearn.manifold.Isomap" title="sklearn.manifold.Isomap"><code class="xref py py-class docutils literal notranslate"><span class="pre">manifold.Isomap</span></code></a>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/10482">#10482</a> by <a class="reference external" href="https://github.com/TomDLT">Tom Dupre la Tour</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-metrics">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.metrics" title="sklearn.metrics"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.metrics</span></code></a><a class="headerlink" href="#sklearn-metrics" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Major Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.metrics.plot_roc_curve.html#sklearn.metrics.plot_roc_curve" title="sklearn.metrics.plot_roc_curve"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.plot_roc_curve</span></code></a> has been added to plot roc
curves. This function introduces the visualization API described in
the <a class="reference internal" href="../visualizations.html#visualizations"><span class="std std-ref">User Guide</span></a>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14357">#14357</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  Added a new parameter <code class="docutils literal notranslate"><span class="pre">zero_division</span></code> to multiple classification
metrics: <code class="xref py py-func docutils literal notranslate"><span class="pre">precision_score</span></code>, <code class="xref py py-func docutils literal notranslate"><span class="pre">recall_score</span></code>, <code class="xref py py-func docutils literal notranslate"><span class="pre">f1_score</span></code>,
<code class="xref py py-func docutils literal notranslate"><span class="pre">fbeta_score</span></code>, <code class="xref py py-func docutils literal notranslate"><span class="pre">precision_recall_fscore_support</span></code>,
<code class="xref py py-func docutils literal notranslate"><span class="pre">classification_report</span></code>. This allows to set returned value for
ill-defined metrics.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14900">#14900</a> by <a class="reference external" href="https://github.com/marctorrellas">Marc Torrellas Socastro</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  Added the <a class="reference internal" href="../modules/generated/sklearn.metrics.pairwise.nan_euclidean_distances.html#sklearn.metrics.pairwise.nan_euclidean_distances" title="sklearn.metrics.pairwise.nan_euclidean_distances"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.pairwise.nan_euclidean_distances</span></code></a> metric,
which calculates euclidean distances in the presence of missing values.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/12852">#12852</a> by <a class="reference external" href="https://github.com/ashimb9">Ashim Bhattarai</a> and <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  New ranking metrics <a class="reference internal" href="../modules/generated/sklearn.metrics.ndcg_score.html#sklearn.metrics.ndcg_score" title="sklearn.metrics.ndcg_score"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.ndcg_score</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.metrics.dcg_score.html#sklearn.metrics.dcg_score" title="sklearn.metrics.dcg_score"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.dcg_score</span></code></a> have been added to compute Discounted Cumulative
Gain and Normalized Discounted Cumulative Gain. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/9951">#9951</a> by <a class="reference external" href="https://github.com/jeromedockes">Jérôme
Dockès</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.metrics.plot_precision_recall_curve.html#sklearn.metrics.plot_precision_recall_curve" title="sklearn.metrics.plot_precision_recall_curve"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.plot_precision_recall_curve</span></code></a> has been added to plot
precision recall curves. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14936">#14936</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.metrics.plot_confusion_matrix.html#sklearn.metrics.plot_confusion_matrix" title="sklearn.metrics.plot_confusion_matrix"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.plot_confusion_matrix</span></code></a> has been added to plot
confusion matrices. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15083">#15083</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  Added multiclass support to <a class="reference internal" href="../modules/generated/sklearn.metrics.roc_auc_score.html#sklearn.metrics.roc_auc_score" title="sklearn.metrics.roc_auc_score"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.roc_auc_score</span></code></a> with
corresponding scorers <code class="docutils literal notranslate"><span class="pre">'roc_auc_ovr'</span></code>, <code class="docutils literal notranslate"><span class="pre">'roc_auc_ovo'</span></code>,
<code class="docutils literal notranslate"><span class="pre">'roc_auc_ovr_weighted'</span></code>, and <code class="docutils literal notranslate"><span class="pre">'roc_auc_ovo_weighted'</span></code>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/12789">#12789</a> and <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15274">#15274</a> by
<a class="reference external" href="https://github.com/kathyxchen">Kathy Chen</a>, <a class="reference external" href="https://github.com/maskani-moh">Mohamed Maskani</a>, and
<a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  Add <a class="reference internal" href="../modules/generated/sklearn.metrics.mean_tweedie_deviance.html#sklearn.metrics.mean_tweedie_deviance" title="sklearn.metrics.mean_tweedie_deviance"><code class="xref py py-class docutils literal notranslate"><span class="pre">metrics.mean_tweedie_deviance</span></code></a> measuring the
Tweedie deviance for a given <code class="docutils literal notranslate"><span class="pre">power</span></code> parameter. Also add mean Poisson
deviance <a class="reference internal" href="../modules/generated/sklearn.metrics.mean_poisson_deviance.html#sklearn.metrics.mean_poisson_deviance" title="sklearn.metrics.mean_poisson_deviance"><code class="xref py py-class docutils literal notranslate"><span class="pre">metrics.mean_poisson_deviance</span></code></a> and mean Gamma deviance
<a class="reference internal" href="../modules/generated/sklearn.metrics.mean_gamma_deviance.html#sklearn.metrics.mean_gamma_deviance" title="sklearn.metrics.mean_gamma_deviance"><code class="xref py py-class docutils literal notranslate"><span class="pre">metrics.mean_gamma_deviance</span></code></a> that are special cases of the Tweedie
deviance for <code class="docutils literal notranslate"><span class="pre">power=1</span></code> and <code class="docutils literal notranslate"><span class="pre">power=2</span></code> respectively.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13938">#13938</a> by <a class="reference external" href="https://github.com/lorentzenchr">Christian Lorentzen</a> and
<a class="reference external" href="https://github.com/rth">Roman Yurchak</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Efficiency</span></span>  Improved performance of
<a class="reference internal" href="../modules/generated/sklearn.metrics.pairwise.manhattan_distances.html#sklearn.metrics.pairwise.manhattan_distances" title="sklearn.metrics.pairwise.manhattan_distances"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.pairwise.manhattan_distances</span></code></a> in the case of sparse matrices.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15049">#15049</a> by <code class="docutils literal notranslate"><span class="pre">Paolo</span> <span class="pre">Toccaceli</span> <span class="pre">&lt;ptocca&gt;</span></code>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  The parameter <code class="docutils literal notranslate"><span class="pre">beta</span></code> in <a class="reference internal" href="../modules/generated/sklearn.metrics.fbeta_score.html#sklearn.metrics.fbeta_score" title="sklearn.metrics.fbeta_score"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.fbeta_score</span></code></a> is
updated to accept the zero and <code class="docutils literal notranslate"><span class="pre">float('+inf')</span></code> value.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13231">#13231</a> by <a class="reference external" href="https://github.com/corona10">Dong-hee Na</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  Added parameter <code class="docutils literal notranslate"><span class="pre">squared</span></code> in <a class="reference internal" href="../modules/generated/sklearn.metrics.mean_squared_error.html#sklearn.metrics.mean_squared_error" title="sklearn.metrics.mean_squared_error"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.mean_squared_error</span></code></a>
to return root mean squared error.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13467">#13467</a> by <a class="reference external" href="https://github.com/urvang96">Urvang Patel</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  Allow computing averaged metrics in the case of no true positives.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14595">#14595</a> by <a class="reference external" href="https://amueller.github.io/">Andreas Müller</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  Multilabel metrics now supports list of lists as input.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14865">#14865</a> <a class="reference external" href="https://github.com/srivatsan-ramesh">Srivatsan Ramesh</a>,
<a class="reference external" href="https://github.com/herilalaina">Herilalaina Rakotoarison</a>,
<a class="reference external" href="https://github.com/leonardbinet">Léonard Binet</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.metrics.median_absolute_error.html#sklearn.metrics.median_absolute_error" title="sklearn.metrics.median_absolute_error"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.median_absolute_error</span></code></a> now supports
<code class="docutils literal notranslate"><span class="pre">multioutput</span></code> parameter.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14732">#14732</a> by <a class="reference external" href="https://github.com/agamemnonc">Agamemnon Krasoulis</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  ‘roc_auc_ovr_weighted’ and ‘roc_auc_ovo_weighted’ can now be
used as the <a class="reference internal" href="../glossary.html#term-scoring"><span class="xref std std-term">scoring</span></a> parameter of model-selection tools.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14417">#14417</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.metrics.confusion_matrix.html#sklearn.metrics.confusion_matrix" title="sklearn.metrics.confusion_matrix"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.confusion_matrix</span></code></a> accepts a parameters
<code class="docutils literal notranslate"><span class="pre">normalize</span></code> allowing to normalize the confusion matrix by column, rows, or
overall.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15625">#15625</a> by <code class="docutils literal notranslate"><span class="pre">Guillaume</span> <span class="pre">Lemaitre</span> <span class="pre">&lt;glemaitre&gt;</span></code>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Raise a ValueError in <a class="reference internal" href="../modules/generated/sklearn.metrics.silhouette_score.html#sklearn.metrics.silhouette_score" title="sklearn.metrics.silhouette_score"><code class="xref py py-func docutils literal notranslate"><span class="pre">metrics.silhouette_score</span></code></a> when a
precomputed distance matrix contains non-zero diagonal entries.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/12258">#12258</a> by <a class="reference external" href="https://github.com/sjtrny">Stephen Tierney</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  <code class="docutils literal notranslate"><span class="pre">scoring=&quot;neg_brier_score&quot;</span></code> should be used instead of
<code class="docutils literal notranslate"><span class="pre">scoring=&quot;brier_score_loss&quot;</span></code> which is now deprecated.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14898">#14898</a> by <a class="reference external" href="https://github.com/stefan-matcovici">Stefan Matcovici</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-model-selection">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.model_selection" title="sklearn.model_selection"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.model_selection</span></code></a><a class="headerlink" href="#sklearn-model-selection" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-info">Efficiency</span></span>  Improved performance of multimetric scoring in
<a class="reference internal" href="../modules/generated/sklearn.model_selection.cross_validate.html#sklearn.model_selection.cross_validate" title="sklearn.model_selection.cross_validate"><code class="xref py py-func docutils literal notranslate"><span class="pre">model_selection.cross_validate</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV" title="sklearn.model_selection.GridSearchCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">model_selection.GridSearchCV</span></code></a>, and
<a class="reference internal" href="../modules/generated/sklearn.model_selection.RandomizedSearchCV.html#sklearn.model_selection.RandomizedSearchCV" title="sklearn.model_selection.RandomizedSearchCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">model_selection.RandomizedSearchCV</span></code></a>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14593">#14593</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.model_selection.learning_curve.html#sklearn.model_selection.learning_curve" title="sklearn.model_selection.learning_curve"><code class="xref py py-class docutils literal notranslate"><span class="pre">model_selection.learning_curve</span></code></a> now accepts parameter
<code class="docutils literal notranslate"><span class="pre">return_times</span></code> which can be used to retrieve computation times in order to
plot model scalability (see learning_curve example).
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13938">#13938</a> by <a class="reference external" href="https://github.com/H4dr1en">Hadrien Reboul</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.model_selection.RandomizedSearchCV.html#sklearn.model_selection.RandomizedSearchCV" title="sklearn.model_selection.RandomizedSearchCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">model_selection.RandomizedSearchCV</span></code></a> now accepts lists
of parameter distributions. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14549">#14549</a> by <a class="reference external" href="https://amueller.github.io/">Andreas Müller</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Reimplemented <a class="reference internal" href="../modules/generated/sklearn.model_selection.StratifiedKFold.html#sklearn.model_selection.StratifiedKFold" title="sklearn.model_selection.StratifiedKFold"><code class="xref py py-class docutils literal notranslate"><span class="pre">model_selection.StratifiedKFold</span></code></a> to fix an issue
where one test set could be <code class="docutils literal notranslate"><span class="pre">n_classes</span></code> larger than another. Test sets should
now be near-equally sized. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14704">#14704</a> by <a class="reference external" href="https://joelnothman.com/">Joel Nothman</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  The <code class="docutils literal notranslate"><span class="pre">cv_results_</span></code> attribute of <a class="reference internal" href="../modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV" title="sklearn.model_selection.GridSearchCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">model_selection.GridSearchCV</span></code></a>
and <a class="reference internal" href="../modules/generated/sklearn.model_selection.RandomizedSearchCV.html#sklearn.model_selection.RandomizedSearchCV" title="sklearn.model_selection.RandomizedSearchCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">model_selection.RandomizedSearchCV</span></code></a> now only contains unfitted
estimators. This potentially saves a lot of memory since the state of the
estimators isn’t stored. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/#15096">##15096</a> by <a class="reference external" href="https://amueller.github.io/">Andreas Müller</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  <a class="reference internal" href="../modules/generated/sklearn.model_selection.KFold.html#sklearn.model_selection.KFold" title="sklearn.model_selection.KFold"><code class="xref py py-class docutils literal notranslate"><span class="pre">model_selection.KFold</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.model_selection.StratifiedKFold.html#sklearn.model_selection.StratifiedKFold" title="sklearn.model_selection.StratifiedKFold"><code class="xref py py-class docutils literal notranslate"><span class="pre">model_selection.StratifiedKFold</span></code></a> now raise a warning if
<code class="docutils literal notranslate"><span class="pre">random_state</span></code> is set but <code class="docutils literal notranslate"><span class="pre">shuffle</span></code> is False. This will raise an error in
0.24.</p></li>
</ul>
</div>
<div class="section" id="sklearn-multioutput">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.multioutput" title="sklearn.multioutput"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.multioutput</span></code></a><a class="headerlink" href="#sklearn-multioutput" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.multioutput.MultiOutputClassifier.html#sklearn.multioutput.MultiOutputClassifier" title="sklearn.multioutput.MultiOutputClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">multioutput.MultiOutputClassifier</span></code></a> now has attribute
<code class="docutils literal notranslate"><span class="pre">classes_</span></code>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14629">#14629</a> by <a class="reference external" href="https://github.com/agamemnonc">Agamemnon Krasoulis</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.multioutput.MultiOutputClassifier.html#sklearn.multioutput.MultiOutputClassifier" title="sklearn.multioutput.MultiOutputClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">multioutput.MultiOutputClassifier</span></code></a> now has <code class="docutils literal notranslate"><span class="pre">predict_proba</span></code>
as property and can be checked with <code class="docutils literal notranslate"><span class="pre">hasattr</span></code>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/15488">#15488</a> <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15490">#15490</a> by <a class="reference external" href="https://github.com/rebekahkim">Rebekah Kim</a></p></li>
</ul>
</div>
<div class="section" id="sklearn-naive-bayes">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.naive_bayes" title="sklearn.naive_bayes"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.naive_bayes</span></code></a><a class="headerlink" href="#sklearn-naive-bayes" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Major Feature</span></span>  Added <a class="reference internal" href="../modules/generated/sklearn.naive_bayes.CategoricalNB.html#sklearn.naive_bayes.CategoricalNB" title="sklearn.naive_bayes.CategoricalNB"><code class="xref py py-class docutils literal notranslate"><span class="pre">naive_bayes.CategoricalNB</span></code></a> that implements the
Categorical Naive Bayes classifier.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/12569">#12569</a> by <a class="reference external" href="https://github.com/timbicker">Tim Bicker</a> and
<a class="reference external" href="https://github.com/FlorianWilhelm">Florian Wilhelm</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-neighbors">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.neighbors" title="sklearn.neighbors"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.neighbors</span></code></a><a class="headerlink" href="#sklearn-neighbors" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Major Feature</span></span>  Added <a class="reference internal" href="../modules/generated/sklearn.neighbors.KNeighborsTransformer.html#sklearn.neighbors.KNeighborsTransformer" title="sklearn.neighbors.KNeighborsTransformer"><code class="xref py py-class docutils literal notranslate"><span class="pre">neighbors.KNeighborsTransformer</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.neighbors.RadiusNeighborsTransformer.html#sklearn.neighbors.RadiusNeighborsTransformer" title="sklearn.neighbors.RadiusNeighborsTransformer"><code class="xref py py-class docutils literal notranslate"><span class="pre">neighbors.RadiusNeighborsTransformer</span></code></a>, which transform input dataset
into a sparse neighbors graph. They give finer control on nearest neighbors
computations and enable easy pipeline caching for multiple use.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/10482">#10482</a> by <a class="reference external" href="https://github.com/TomDLT">Tom Dupre la Tour</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.neighbors.KNeighborsClassifier.html#sklearn.neighbors.KNeighborsClassifier" title="sklearn.neighbors.KNeighborsClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">neighbors.KNeighborsClassifier</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.neighbors.KNeighborsRegressor.html#sklearn.neighbors.KNeighborsRegressor" title="sklearn.neighbors.KNeighborsRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">neighbors.KNeighborsRegressor</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.neighbors.RadiusNeighborsClassifier.html#sklearn.neighbors.RadiusNeighborsClassifier" title="sklearn.neighbors.RadiusNeighborsClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">neighbors.RadiusNeighborsClassifier</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.neighbors.RadiusNeighborsRegressor.html#sklearn.neighbors.RadiusNeighborsRegressor" title="sklearn.neighbors.RadiusNeighborsRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">neighbors.RadiusNeighborsRegressor</span></code></a>, and
<a class="reference internal" href="../modules/generated/sklearn.neighbors.LocalOutlierFactor.html#sklearn.neighbors.LocalOutlierFactor" title="sklearn.neighbors.LocalOutlierFactor"><code class="xref py py-class docutils literal notranslate"><span class="pre">neighbors.LocalOutlierFactor</span></code></a> now accept precomputed sparse
neighbors graph as input. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/10482">#10482</a> by <a class="reference external" href="https://github.com/TomDLT">Tom Dupre la Tour</a> and
<a class="reference external" href="https://github.com/thechargedneutron">Kumar Ashutosh</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.neighbors.RadiusNeighborsClassifier.html#sklearn.neighbors.RadiusNeighborsClassifier" title="sklearn.neighbors.RadiusNeighborsClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">neighbors.RadiusNeighborsClassifier</span></code></a> now supports
predicting probabilities by using <code class="docutils literal notranslate"><span class="pre">predict_proba</span></code> and supports more
outlier_label options: ‘most_frequent’, or different outlier_labels
for multi-outputs.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/9597">#9597</a> by <a class="reference external" href="https://github.com/webber26232">Wenbo Zhao</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Efficiency</span></span>  Efficiency improvements for
<a class="reference internal" href="../modules/generated/sklearn.neighbors.RadiusNeighborsClassifier.html#sklearn.neighbors.RadiusNeighborsClassifier.predict" title="sklearn.neighbors.RadiusNeighborsClassifier.predict"><code class="xref py py-func docutils literal notranslate"><span class="pre">neighbors.RadiusNeighborsClassifier.predict</span></code></a>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/9597">#9597</a> by <a class="reference external" href="https://github.com/webber26232">Wenbo Zhao</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.neighbors.KNeighborsRegressor.html#sklearn.neighbors.KNeighborsRegressor" title="sklearn.neighbors.KNeighborsRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">neighbors.KNeighborsRegressor</span></code></a> now throws error when
<code class="docutils literal notranslate"><span class="pre">metric='precomputed'</span></code> and fit on non-square data.  <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14336">#14336</a> by
<a class="reference external" href="https://github.com/gdex1">Gregory Dexter</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-neural-network">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.neural_network" title="sklearn.neural_network"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.neural_network</span></code></a><a class="headerlink" href="#sklearn-neural-network" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  Add <code class="docutils literal notranslate"><span class="pre">max_fun</span></code> parameter in
<code class="xref py py-class docutils literal notranslate"><span class="pre">neural_network.BaseMultilayerPerceptron</span></code>,
<a class="reference internal" href="../modules/generated/sklearn.neural_network.MLPRegressor.html#sklearn.neural_network.MLPRegressor" title="sklearn.neural_network.MLPRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">neural_network.MLPRegressor</span></code></a>, and
<a class="reference internal" href="../modules/generated/sklearn.neural_network.MLPClassifier.html#sklearn.neural_network.MLPClassifier" title="sklearn.neural_network.MLPClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">neural_network.MLPClassifier</span></code></a> to give control over
maximum number of function evaluation to not meet <code class="docutils literal notranslate"><span class="pre">tol</span></code> improvement.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/9274">#9274</a> by <a class="reference external" href="https://github.com/daniel-perry">Daniel Perry</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-pipeline">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.pipeline" title="sklearn.pipeline"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.pipeline</span></code></a><a class="headerlink" href="#sklearn-pipeline" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.pipeline.Pipeline.html#sklearn.pipeline.Pipeline" title="sklearn.pipeline.Pipeline"><code class="xref py py-class docutils literal notranslate"><span class="pre">pipeline.Pipeline</span></code></a> now supports <a class="reference internal" href="../glossary.html#term-score-samples"><span class="xref std std-term">score_samples</span></a> if
the final estimator does.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13806">#13806</a> by <a class="reference external" href="https://github.com/ab-anssi">Anaël Beaugnon</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  The <code class="docutils literal notranslate"><span class="pre">fit</span></code> in <a class="reference internal" href="../modules/generated/sklearn.pipeline.FeatureUnion.html#sklearn.pipeline.FeatureUnion" title="sklearn.pipeline.FeatureUnion"><code class="xref py py-class docutils literal notranslate"><span class="pre">FeatureUnion</span></code></a> now accepts <code class="docutils literal notranslate"><span class="pre">fit_params</span></code>
to pass to the underlying transformers. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15119">#15119</a> by <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  <code class="docutils literal notranslate"><span class="pre">None</span></code> as a transformer is now deprecated in
<a class="reference internal" href="../modules/generated/sklearn.pipeline.FeatureUnion.html#sklearn.pipeline.FeatureUnion" title="sklearn.pipeline.FeatureUnion"><code class="xref py py-class docutils literal notranslate"><span class="pre">pipeline.FeatureUnion</span></code></a>. Please use <code class="docutils literal notranslate"><span class="pre">'drop'</span></code> instead. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15053">#15053</a> by
<a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-preprocessing">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.preprocessing" title="sklearn.preprocessing"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.preprocessing</span></code></a><a class="headerlink" href="#sklearn-preprocessing" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-info">Efficiency</span></span>  <a class="reference internal" href="../modules/generated/sklearn.preprocessing.PolynomialFeatures.html#sklearn.preprocessing.PolynomialFeatures" title="sklearn.preprocessing.PolynomialFeatures"><code class="xref py py-class docutils literal notranslate"><span class="pre">preprocessing.PolynomialFeatures</span></code></a> is now faster when
the input data is dense. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13290">#13290</a> by <a class="reference external" href="https://github.com/sdpython">Xavier Dupré</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  Avoid unnecessary data copy when fitting preprocessors
<a class="reference internal" href="../modules/generated/sklearn.preprocessing.StandardScaler.html#sklearn.preprocessing.StandardScaler" title="sklearn.preprocessing.StandardScaler"><code class="xref py py-class docutils literal notranslate"><span class="pre">preprocessing.StandardScaler</span></code></a>, <a class="reference internal" href="../modules/generated/sklearn.preprocessing.MinMaxScaler.html#sklearn.preprocessing.MinMaxScaler" title="sklearn.preprocessing.MinMaxScaler"><code class="xref py py-class docutils literal notranslate"><span class="pre">preprocessing.MinMaxScaler</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.preprocessing.MaxAbsScaler.html#sklearn.preprocessing.MaxAbsScaler" title="sklearn.preprocessing.MaxAbsScaler"><code class="xref py py-class docutils literal notranslate"><span class="pre">preprocessing.MaxAbsScaler</span></code></a>, <a class="reference internal" href="../modules/generated/sklearn.preprocessing.RobustScaler.html#sklearn.preprocessing.RobustScaler" title="sklearn.preprocessing.RobustScaler"><code class="xref py py-class docutils literal notranslate"><span class="pre">preprocessing.RobustScaler</span></code></a>
and <a class="reference internal" href="../modules/generated/sklearn.preprocessing.QuantileTransformer.html#sklearn.preprocessing.QuantileTransformer" title="sklearn.preprocessing.QuantileTransformer"><code class="xref py py-class docutils literal notranslate"><span class="pre">preprocessing.QuantileTransformer</span></code></a> which results in a slight
performance improvement. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13987">#13987</a> by <a class="reference external" href="https://github.com/rth">Roman Yurchak</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  KernelCenterer now throws error when fit on non-square
<a class="reference internal" href="../modules/generated/sklearn.preprocessing.KernelCenterer.html#sklearn.preprocessing.KernelCenterer" title="sklearn.preprocessing.KernelCenterer"><code class="xref py py-class docutils literal notranslate"><span class="pre">preprocessing.KernelCenterer</span></code></a>
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14336">#14336</a> by <a class="reference external" href="https://github.com/gdex1">Gregory Dexter</a>.</p></li>
</ul>
</div>
<div class="section" id="id2">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.model_selection" title="sklearn.model_selection"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.model_selection</span></code></a><a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV" title="sklearn.model_selection.GridSearchCV"><code class="xref py py-class docutils literal notranslate"><span class="pre">model_selection.GridSearchCV</span></code></a> and
<code class="docutils literal notranslate"><span class="pre">model_selection.RandomizedSearchCV</span></code> now supports the
<a class="reference internal" href="../glossary.html#term-pairwise"><span class="xref std std-term">_pairwise</span></a> property, which prevents an error during cross-validation
for estimators with pairwise inputs (such as
<a class="reference internal" href="../modules/generated/sklearn.neighbors.KNeighborsClassifier.html#sklearn.neighbors.KNeighborsClassifier" title="sklearn.neighbors.KNeighborsClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">neighbors.KNeighborsClassifier</span></code></a> when <a class="reference internal" href="../glossary.html#term-metric"><span class="xref std std-term">metric</span></a> is set to
‘precomputed’).
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13925">#13925</a> by <a class="reference external" href="https://github.com/isrobson">Isaac S. Robson</a> and <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15524">#15524</a> by
<a class="reference external" href="https://github.com/xun-tang">Xun Tang</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-svm">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.svm" title="sklearn.svm"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.svm</span></code></a><a class="headerlink" href="#sklearn-svm" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC" title="sklearn.svm.SVC"><code class="xref py py-class docutils literal notranslate"><span class="pre">svm.SVC</span></code></a> and <a class="reference internal" href="../modules/generated/sklearn.svm.NuSVC.html#sklearn.svm.NuSVC" title="sklearn.svm.NuSVC"><code class="xref py py-class docutils literal notranslate"><span class="pre">svm.NuSVC</span></code></a> now accept a
<code class="docutils literal notranslate"><span class="pre">break_ties</span></code> parameter. This parameter results in <a class="reference internal" href="../glossary.html#term-predict"><span class="xref std std-term">predict</span></a> breaking
the ties according to the confidence values of <a class="reference internal" href="../glossary.html#term-decision-function"><span class="xref std std-term">decision_function</span></a>, if
<code class="docutils literal notranslate"><span class="pre">decision_function_shape='ovr'</span></code>, and the number of target classes &gt; 2.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/12557">#12557</a> by <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  SVM estimators now throw a more specific error when
<code class="docutils literal notranslate"><span class="pre">kernel='precomputed'</span></code> and fit on non-square data.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14336">#14336</a> by <a class="reference external" href="https://github.com/gdex1">Gregory Dexter</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC" title="sklearn.svm.SVC"><code class="xref py py-class docutils literal notranslate"><span class="pre">svm.SVC</span></code></a>, <a class="reference internal" href="../modules/generated/sklearn.svm.SVR.html#sklearn.svm.SVR" title="sklearn.svm.SVR"><code class="xref py py-class docutils literal notranslate"><span class="pre">svm.SVR</span></code></a>, <a class="reference internal" href="../modules/generated/sklearn.svm.NuSVR.html#sklearn.svm.NuSVR" title="sklearn.svm.NuSVR"><code class="xref py py-class docutils literal notranslate"><span class="pre">svm.NuSVR</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.svm.OneClassSVM.html#sklearn.svm.OneClassSVM" title="sklearn.svm.OneClassSVM"><code class="xref py py-class docutils literal notranslate"><span class="pre">svm.OneClassSVM</span></code></a> when received values negative or zero
for parameter <code class="docutils literal notranslate"><span class="pre">sample_weight</span></code> in method fit(), generated an
invalid model. This behavior occurred only in some border scenarios.
Now in these cases, fit() will fail with an Exception.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14286">#14286</a> by <a class="reference external" href="https://github.com/alexshacked">Alex Shacked</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  The <code class="docutils literal notranslate"><span class="pre">n_support_</span></code> attribute of <a class="reference internal" href="../modules/generated/sklearn.svm.SVR.html#sklearn.svm.SVR" title="sklearn.svm.SVR"><code class="xref py py-class docutils literal notranslate"><span class="pre">svm.SVR</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.svm.OneClassSVM.html#sklearn.svm.OneClassSVM" title="sklearn.svm.OneClassSVM"><code class="xref py py-class docutils literal notranslate"><span class="pre">svm.OneClassSVM</span></code></a> was previously non-initialized, and had size 2. It
has now size 1 with the correct value. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15099">#15099</a> by <a class="reference external" href="https://github.com/NicolasHug">Nicolas Hug</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  fixed a bug in <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseLibSVM._sparse_fit</span></code> where n_SV=0 raised a
ZeroDivisionError. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14894">#14894</a> by <a class="reference external" href="https://github.com/danna-naser">Danna Naser</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  The liblinear solver now supports <code class="docutils literal notranslate"><span class="pre">sample_weight</span></code>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15038">#15038</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-tree">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.tree" title="sklearn.tree"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.tree</span></code></a><a class="headerlink" href="#sklearn-tree" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  Adds minimal cost complexity pruning, controlled by <code class="docutils literal notranslate"><span class="pre">ccp_alpha</span></code>,
to <a class="reference internal" href="../modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier" title="sklearn.tree.DecisionTreeClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">tree.DecisionTreeClassifier</span></code></a>, <a class="reference internal" href="../modules/generated/sklearn.tree.DecisionTreeRegressor.html#sklearn.tree.DecisionTreeRegressor" title="sklearn.tree.DecisionTreeRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">tree.DecisionTreeRegressor</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.tree.ExtraTreeClassifier.html#sklearn.tree.ExtraTreeClassifier" title="sklearn.tree.ExtraTreeClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">tree.ExtraTreeClassifier</span></code></a>, <a class="reference internal" href="../modules/generated/sklearn.tree.ExtraTreeRegressor.html#sklearn.tree.ExtraTreeRegressor" title="sklearn.tree.ExtraTreeRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">tree.ExtraTreeRegressor</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier" title="sklearn.ensemble.RandomForestClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.RandomForestClassifier</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor" title="sklearn.ensemble.RandomForestRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.RandomForestRegressor</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.ensemble.ExtraTreesClassifier.html#sklearn.ensemble.ExtraTreesClassifier" title="sklearn.ensemble.ExtraTreesClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.ExtraTreesClassifier</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.ensemble.ExtraTreesRegressor.html#sklearn.ensemble.ExtraTreesRegressor" title="sklearn.ensemble.ExtraTreesRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.ExtraTreesRegressor</span></code></a>,
<a class="reference internal" href="../modules/generated/sklearn.ensemble.GradientBoostingClassifier.html#sklearn.ensemble.GradientBoostingClassifier" title="sklearn.ensemble.GradientBoostingClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.GradientBoostingClassifier</span></code></a>,
and <a class="reference internal" href="../modules/generated/sklearn.ensemble.GradientBoostingRegressor.html#sklearn.ensemble.GradientBoostingRegressor" title="sklearn.ensemble.GradientBoostingRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ensemble.GradientBoostingRegressor</span></code></a>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/12887">#12887</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  <code class="docutils literal notranslate"><span class="pre">presort</span></code> is now deprecated in
<a class="reference internal" href="../modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier" title="sklearn.tree.DecisionTreeClassifier"><code class="xref py py-class docutils literal notranslate"><span class="pre">tree.DecisionTreeClassifier</span></code></a> and
<a class="reference internal" href="../modules/generated/sklearn.tree.DecisionTreeRegressor.html#sklearn.tree.DecisionTreeRegressor" title="sklearn.tree.DecisionTreeRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">tree.DecisionTreeRegressor</span></code></a>, and the parameter has no effect.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14907">#14907</a> by <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  The <code class="docutils literal notranslate"><span class="pre">classes_</span></code> and <code class="docutils literal notranslate"><span class="pre">n_classes_</span></code> attributes of
<a class="reference internal" href="../modules/generated/sklearn.tree.DecisionTreeRegressor.html#sklearn.tree.DecisionTreeRegressor" title="sklearn.tree.DecisionTreeRegressor"><code class="xref py py-class docutils literal notranslate"><span class="pre">tree.DecisionTreeRegressor</span></code></a> are now deprecated. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15028">#15028</a> by
<a class="reference external" href="https://github.com/meiguan">Mei Guan</a>, <a class="reference external" href="https://github.com/NicolasHug">Nicolas Hug</a>, and <a class="reference external" href="https://github.com/adrinjalali">Adrin Jalali</a>.</p></li>
</ul>
</div>
<div class="section" id="sklearn-utils">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.utils" title="sklearn.utils"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.utils</span></code></a><a class="headerlink" href="#sklearn-utils" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  <a class="reference internal" href="../modules/generated/sklearn.utils.estimator_checks.check_estimator.html#sklearn.utils.estimator_checks.check_estimator" title="sklearn.utils.estimator_checks.check_estimator"><code class="xref py py-func docutils literal notranslate"><span class="pre">check_estimator</span></code></a> can now generate
checks by setting <code class="docutils literal notranslate"><span class="pre">generate_only=True</span></code>. Previously, running
<a class="reference internal" href="../modules/generated/sklearn.utils.estimator_checks.check_estimator.html#sklearn.utils.estimator_checks.check_estimator" title="sklearn.utils.estimator_checks.check_estimator"><code class="xref py py-func docutils literal notranslate"><span class="pre">check_estimator</span></code></a> will stop when the first
check fails. With <code class="docutils literal notranslate"><span class="pre">generate_only=True</span></code>, all checks can run independently and
report the ones that are failing. Read more in
<a class="reference internal" href="../developers/develop.html#rolling-your-own-estimator"><span class="std std-ref">Rolling your own estimator</span></a>. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14381">#14381</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  Added a pytest specific decorator,
<a class="reference internal" href="../modules/generated/sklearn.utils.estimator_checks.parametrize_with_checks.html#sklearn.utils.estimator_checks.parametrize_with_checks" title="sklearn.utils.estimator_checks.parametrize_with_checks"><code class="xref py py-func docutils literal notranslate"><span class="pre">parametrize_with_checks</span></code></a>, to parametrize
estimator checks for a list of estimators. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14381">#14381</a> by <a class="reference external" href="https://github.com/thomasjpfan">Thomas Fan</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-success">Feature</span></span>  A new random variable, <code class="xref py py-class docutils literal notranslate"><span class="pre">utils.fixes.loguniform</span></code> implements a
log-uniform random variable (e.g., for use in RandomizedSearchCV).
For example, the outcomes <code class="docutils literal notranslate"><span class="pre">1</span></code>, <code class="docutils literal notranslate"><span class="pre">10</span></code> and <code class="docutils literal notranslate"><span class="pre">100</span></code> are all equally likely
for <code class="docutils literal notranslate"><span class="pre">loguniform(1,</span> <span class="pre">100)</span></code>. See <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/issues/11232">#11232</a> by
<a class="reference external" href="https://github.com/stsievert">Scott Sievert</a> and <a class="reference external" href="https://github.com/sauln">Nathaniel Saul</a>,
and <code class="docutils literal notranslate"><span class="pre">SciPy</span> <span class="pre">PR</span> <span class="pre">10815</span> <span class="pre">&lt;https://github.com/scipy/scipy/pull/10815&gt;</span></code>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.utils.safe_indexing.html#sklearn.utils.safe_indexing" title="sklearn.utils.safe_indexing"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.safe_indexing</span></code></a> (now deprecated) accepts an
<code class="docutils literal notranslate"><span class="pre">axis</span></code> parameter to index array-like across rows and columns. The column
indexing can be done on NumPy array, SciPy sparse matrix, and Pandas
DataFrame. An additional refactoring was done. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14035">#14035</a> and <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14475">#14475</a>
by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-info">Enhancement</span></span>  <a class="reference internal" href="../modules/generated/sklearn.utils.extmath.safe_sparse_dot.html#sklearn.utils.extmath.safe_sparse_dot" title="sklearn.utils.extmath.safe_sparse_dot"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.extmath.safe_sparse_dot</span></code></a> works between 3D+ ndarray
and sparse matrix.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14538">#14538</a> by <a class="reference external" href="https://github.com/jeremiedbb">Jérémie du Boisberranger</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.utils.check_array.html#sklearn.utils.check_array" title="sklearn.utils.check_array"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.check_array</span></code></a> is now raising an error instead of casting
NaN to integer.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14872">#14872</a> by <a class="reference external" href="https://github.com/rth">Roman Yurchak</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  <a class="reference internal" href="../modules/generated/sklearn.utils.check_array.html#sklearn.utils.check_array" title="sklearn.utils.check_array"><code class="xref py py-func docutils literal notranslate"><span class="pre">utils.check_array</span></code></a> will now correctly detect numeric dtypes in
pandas dataframes, fixing a bug where <code class="docutils literal notranslate"><span class="pre">float32</span></code> was upcast to <code class="docutils literal notranslate"><span class="pre">float64</span></code>
unnecessarily. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/15094">#15094</a> by <a class="reference external" href="https://amueller.github.io/">Andreas Müller</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  The following utils have been deprecated and are now private:</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">choose_check_classifiers_labels</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">enforce_estimator_tags_y</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">mocking.MockDataFrame</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">mocking.CheckingClassifier</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">optimize.newton_cg</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">random.random_choice_csc</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">utils.choose_check_classifiers_labels</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">utils.enforce_estimator_tags_y</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">utils.optimize.newton_cg</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">utils.random.random_choice_csc</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">utils.safe_indexing</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">utils.mocking</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">utils.fast_dict</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">utils.seq_dataset</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">utils.weight_vector</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">utils.fixes.parallel_helper</span></code> (removed)</p></li>
<li><p>All of <code class="docutils literal notranslate"><span class="pre">utils.testing</span></code> except for <code class="docutils literal notranslate"><span class="pre">all_estimators</span></code> which is now in
<code class="docutils literal notranslate"><span class="pre">utils</span></code>.</p></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="sklearn-isotonic">
<h3><a class="reference internal" href="../modules/classes.html#module-sklearn.isotonic" title="sklearn.isotonic"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.isotonic</span></code></a><a class="headerlink" href="#sklearn-isotonic" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Fixed a bug where <a class="reference internal" href="../modules/generated/sklearn.isotonic.IsotonicRegression.html#sklearn.isotonic.IsotonicRegression.fit" title="sklearn.isotonic.IsotonicRegression.fit"><code class="xref py py-class docutils literal notranslate"><span class="pre">isotonic.IsotonicRegression.fit</span></code></a> raised error
when <code class="docutils literal notranslate"><span class="pre">X.dtype</span> <span class="pre">==</span> <span class="pre">'float32'</span></code> and <code class="docutils literal notranslate"><span class="pre">X.dtype</span> <span class="pre">!=</span> <span class="pre">y.dtype</span></code>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14902">#14902</a> by <a class="reference external" href="https://github.com/lostcoaster">Lucas</a>.</p></li>
</ul>
</div>
<div class="section" id="miscellaneous">
<h3>Miscellaneous<a class="headerlink" href="#miscellaneous" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Port <code class="docutils literal notranslate"><span class="pre">lobpcg</span></code> from SciPy which implement some bug fixes but only
available in 1.3+.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13609">#13609</a> and <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14971">#14971</a> by <a class="reference external" href="https://github.com/glemaitre">Guillaume Lemaitre</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  Scikit-learn now converts any input data structure implementing a
duck array to a numpy array (using <code class="docutils literal notranslate"><span class="pre">__array__</span></code>) to ensure consistent
behavior instead of relying on <code class="docutils literal notranslate"><span class="pre">__array_function__</span></code> (see <a class="reference external" href="https://numpy.org/neps/nep-0018-array-function-protocol.html">NEP 18</a>).
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14702">#14702</a> by <a class="reference external" href="https://amueller.github.io/">Andreas Müller</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-warning">API Change</span></span>  Replace manual checks with <code class="docutils literal notranslate"><span class="pre">check_is_fitted</span></code>. Errors thrown when
using a non-fitted estimators are now more uniform.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13013">#13013</a> by <a class="reference external" href="https://github.com/agamemnonc">Agamemnon Krasoulis</a>.</p></li>
</ul>
</div>
</div>
<div class="section" id="changes-to-estimator-checks">
<h2>Changes to estimator checks<a class="headerlink" href="#changes-to-estimator-checks" title="Permalink to this headline">¶</a></h2>
<p>These changes mostly affect library developers.</p>
<ul class="simple">
<li><p>Estimators are now expected to raise a <code class="docutils literal notranslate"><span class="pre">NotFittedError</span></code> if <code class="docutils literal notranslate"><span class="pre">predict</span></code> or
<code class="docutils literal notranslate"><span class="pre">transform</span></code> is called before <code class="docutils literal notranslate"><span class="pre">fit</span></code>; previously an <code class="docutils literal notranslate"><span class="pre">AttributeError</span></code> or
<code class="docutils literal notranslate"><span class="pre">ValueError</span></code> was acceptable.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13013">#13013</a> by by <a class="reference external" href="https://github.com/agamemnonc">Agamemnon Krasoulis</a>.</p></li>
<li><p>Binary only classifiers are now supported in estimator checks.
Such classifiers need to have the <code class="docutils literal notranslate"><span class="pre">binary_only=True</span></code> estimator tag.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13875">#13875</a> by <a class="reference external" href="http://trevorstephens.com/">Trevor Stephens</a>.</p></li>
<li><p>Estimators are expected to convert input data (<code class="docutils literal notranslate"><span class="pre">X</span></code>, <code class="docutils literal notranslate"><span class="pre">y</span></code>,
<code class="docutils literal notranslate"><span class="pre">sample_weights</span></code>) to <a class="reference external" href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.html#numpy.ndarray" title="(in NumPy v1.17)"><code class="xref py py-class docutils literal notranslate"><span class="pre">numpy.ndarray</span></code></a> and never call
<code class="docutils literal notranslate"><span class="pre">__array_function__</span></code> on the original datatype that is passed (see <a class="reference external" href="https://numpy.org/neps/nep-0018-array-function-protocol.html">NEP 18</a>).
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14702">#14702</a> by <a class="reference external" href="https://amueller.github.io/">Andreas Müller</a>.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">requires_positive_X</span></code> estimator tag (for models that require
X to be non-negative) is now used by <a class="reference internal" href="../modules/generated/sklearn.utils.estimator_checks.check_estimator.html#sklearn.utils.estimator_checks.check_estimator" title="sklearn.utils.estimator_checks.check_estimator"><code class="xref py py-meth docutils literal notranslate"><span class="pre">utils.estimator_checks.check_estimator</span></code></a>
to make sure a proper error message is raised if X contains some negative entries.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14680">#14680</a> by <a class="reference external" href="https://github.com/agramfort">Alex Gramfort</a>.</p></li>
<li><p>Added check that pairwise estimators raise error on non-square data
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14336">#14336</a> by <a class="reference external" href="https://github.com/gdex1">Gregory Dexter</a>.</p></li>
<li><p>Added two common multioutput estimator tests
<code class="xref py py-func docutils literal notranslate"><span class="pre">check_classifier_multioutput</span></code> and
<code class="xref py py-func docutils literal notranslate"><span class="pre">check_regressor_multioutput</span></code>.
<a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/13392">#13392</a> by <a class="reference external" href="https://github.com/rok">Rok Mihevc</a>.</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  Added <code class="docutils literal notranslate"><span class="pre">check_transformer_data_not_an_array</span></code> to checks where missing</p></li>
<li><p><span class="raw-html"><span class="badge badge-danger">Fix</span></span>  The estimators tags resolution now follows the regular MRO. They used
to be overridable only once. <a class="reference external" href="https://github.com/scikit-learn/scikit-learn/pull/14884">#14884</a> by <a class="reference external" href="https://amueller.github.io/">Andreas Müller</a>.</p></li>
</ul>
</div>
<div class="section" id="code-and-documentation-contributors">
<h2>Code and Documentation Contributors<a class="headerlink" href="#code-and-documentation-contributors" title="Permalink to this headline">¶</a></h2>
<p>Thanks to everyone who has contributed to the maintenance and improvement of the
project since version 0.20, including:</p>
<p>Aaron Alphonsus, Abbie Popa, Abdur-Rahmaan Janhangeer, abenbihi, Abhinav Sagar,
Abhishek Jana, Abraham K. Lagat, Adam J. Stewart, Aditya Vyas, Adrin Jalali,
Agamemnon Krasoulis, Alec Peters, Alessandro Surace, Alexandre de Siqueira,
Alexandre Gramfort, alexgoryainov, Alex Henrie, Alex Itkes, alexshacked, Allen
Akinkunle, Anaël Beaugnon, Anders Kaseorg, Andrea Maldonado, Andrea Navarrete,
Andreas Mueller, Andreas Schuderer, Andrew Nystrom, Angela Ambroz, Anisha
Keshavan, Ankit Jha, Antonio Gutierrez, Anuja Kelkar, Archana Alva,
arnaudstiegler, arpanchowdhry, ashimb9, Ayomide Bamidele, Baran Buluttekin,
barrycg, Bharat Raghunathan, Bill Mill, Biswadip Mandal, blackd0t, Brian G.
Barkley, Brian Wignall, Bryan Yang, c56pony, camilaagw, cartman_nabana,
catajara, Cat Chenal, Cathy, cgsavard, Charles Vesteghem, Chiara Marmo, Chris
Gregory, Christian Lorentzen, Christos Aridas, Dakota Grusak, Daniel Grady,
Daniel Perry, Danna Naser, DatenBergwerk, David Dormagen, deeplook, Dillon
Niederhut, Dong-hee Na, Dougal J. Sutherland, DrGFreeman, Dylan Cashman,
edvardlindelof, Eric Larson, Eric Ndirangu, Eunseop Jeong, Fanny,
federicopisanu, Felix Divo, flaviomorelli, FranciDona, Franco M. Luque, Frank
Hoang, Frederic Haase, g0g0gadget, Gabriel Altay, Gabriel do Vale Rios, Gael
Varoquaux, ganevgv, gdex1, getgaurav2, Gideon Sonoiya, Gordon Chen, gpapadok,
Greg Mogavero, Grzegorz Szpak, Guillaume Lemaitre, Guillem García Subies,
H4dr1en, hadshirt, Hailey Nguyen, Hanmin Qin, Hannah Bruce Macdonald, Harsh
Mahajan, Harsh Soni, Honglu Zhang, Hossein Pourbozorg, Ian Sanders, Ingrid
Spielman, J-A16, jaehong park, Jaime Ferrando Huertas, James Hill, James Myatt,
Jay, jeremiedbb, Jérémie du Boisberranger, jeromedockes, Jesper Dramsch, Joan
Massich, Joanna Zhang, Joel Nothman, Johann Faouzi, Jonathan Rahn, Jon Cusick,
Jose Ortiz, Kanika Sabharwal, Katarina Slama, kellycarmody, Kennedy Kang’ethe,
Kensuke Arai, Kesshi Jordan, Kevad, Kevin Loftis, Kevin Winata, Kevin Yu-Sheng
Li, Kirill Dolmatov, Kirthi Shankar Sivamani, krishna katyal, Lakshmi Krishnan,
Lakshya KD, LalliAcqua, lbfin, Leland McInnes, Léonard Binet, Loic Esteve,
loopyme, lostcoaster, Louis Huynh, lrjball, Luca Ionescu, Lutz Roeder,
MaggieChege, Maithreyi Venkatesh, Maltimore, Maocx, Marc Torrellas, Marie
Douriez, Markus, Markus Frey, Martina G. Vilas, Martin Oywa, Martin Thoma,
Masashi SHIBATA, Maxwell Aladago, mbillingr, m-clare, Meghann Agarwal, m.fab,
Micah Smith, miguelbarao, Miguel Cabrera, Mina Naghshhnejad, Ming Li, motmoti,
mschaffenroth, mthorrell, Natasha Borders, nezar-a, Nicolas Hug, Nidhin
Pattaniyil, Nikita Titov, Nishan Singh Mann, Nitya Mandyam, norvan,
notmatthancock, novaya, nxorable, Oleg Stikhin, Oleksandr Pavlyk, Olivier
Grisel, Omar Saleem, Owen Flanagan, panpiort8, Paolo, Paolo Toccaceli, Paresh
Mathur, Paula, Peng Yu, Peter Marko, pierretallotte, poorna-kumar, pspachtholz,
qdeffense, Rajat Garg, Raphaël Bournhonesque, Ray, Ray Bell, Rebekah Kim, Reza
Gharibi, Richard Payne, Richard W, rlms, Robert Juergens, Rok Mihevc, Roman
Feldbauer, Roman Yurchak, R Sanjabi, RuchitaGarde, Ruth Waithera, Sackey, Sam
Dixon, Samesh Lakhotia, Samuel Taylor, Sarra Habchi, Scott Gigante, Scott
Sievert, Scott White, Sebastian Pölsterl, Sergey Feldman, SeWook Oh, she-dares,
Shreya V, Shubham Mehta, Shuzhe Xiao, SimonCW, smarie, smujjiga, Sönke
Behrends, Soumirai, Sourav Singh, stefan-matcovici, steinfurt, Stéphane
Couvreur, Stephan Tulkens, Stephen Cowley, Stephen Tierney, SylvainLan,
th0rwas, theoptips, theotheo, Thierno Ibrahima DIOP, Thomas Edwards, Thomas J
Fan, Thomas Moreau, Thomas Schmitt, Tilen Kusterle, Tim Bicker, Timsaur, Tim
Staley, Tirth Patel, Tola A, Tom Augspurger, Tom Dupré la Tour, topisan, Trevor
Stephens, ttang131, Urvang Patel, Vathsala Achar, veerlosar, Venkatachalam N,
Victor Luzgin, Vincent Jeanselme, Vincent Lostanlen, Vladimir Korolev,
vnherdeiro, Wenbo Zhao, Wendy Hu, willdarnell, William de Vazelhes,
wolframalpha, xavier dupré, xcjason, x-martian, xsat, xun-tang, Yinglr,
yokasre, Yu-Hang “Maxin” Tang, Yulia Zamriy, Zhao Feng</p>
</div>
</div>


      </div>
    <div class="container">
      <footer class="sk-content-footer">
            &copy; 2007 - 2019, scikit-learn developers (BSD License).
          <a href="../_sources/whats_new/v0.22.rst.txt" rel="nofollow">Show this page source</a>
      </footer>
    </div>
  </div>
</div>
<script src="../_static/js/vendor/bootstrap.min.js"></script>

<script>
    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
    ga('create', 'UA-22606712-2', 'auto');
    ga('set', 'anonymizeIp', true);
    ga('send', 'pageview');
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>


<script>
$(document).ready(function() {
    /* Add a [>>>] button on the top-right corner of code samples to hide
     * the >>> and ... prompts and the output and thus make the code
     * copyable. */
    var div = $('.highlight-python .highlight,' +
                '.highlight-python3 .highlight,' +
                '.highlight-pycon .highlight,' +
		'.highlight-default .highlight')
    var pre = div.find('pre');

    // get the styles from the current theme
    pre.parent().parent().css('position', 'relative');
    var hide_text = 'Hide prompts and outputs';
    var show_text = 'Show prompts and outputs';

    // create and add the button to all the code blocks that contain >>>
    div.each(function(index) {
        var jthis = $(this);
        if (jthis.find('.gp').length > 0) {
            var button = $('<span class="copybutton">&gt;&gt;&gt;</span>');
            button.attr('title', hide_text);
            button.data('hidden', 'false');
            jthis.prepend(button);
        }
        // tracebacks (.gt) contain bare text elements that need to be
        // wrapped in a span to work with .nextUntil() (see later)
        jthis.find('pre:has(.gt)').contents().filter(function() {
            return ((this.nodeType == 3) && (this.data.trim().length > 0));
        }).wrap('<span>');
    });

    // define the behavior of the button when it's clicked
    $('.copybutton').click(function(e){
        e.preventDefault();
        var button = $(this);
        if (button.data('hidden') === 'false') {
            // hide the code output
            button.parent().find('.go, .gp, .gt').hide();
            button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'hidden');
            button.css('text-decoration', 'line-through');
            button.attr('title', show_text);
            button.data('hidden', 'true');
        } else {
            // show the code output
            button.parent().find('.go, .gp, .gt').show();
            button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'visible');
            button.css('text-decoration', 'none');
            button.attr('title', hide_text);
            button.data('hidden', 'false');
        }
    });

	/*** Add permalink buttons next to glossary terms ***/
	$('dl.glossary > dt[id]').append(function() {
		return ('<a class="headerlink" href="#' +
			    this.getAttribute('id') +
			    '" title="Permalink to this term">¶</a>');
	});
  /*** Hide navbar when scrolling down ***/
  // Returns true when headerlink target matches hash in url
  (function() {
    hashTargetOnTop = function() {
        var hash = window.location.hash;
        if ( hash.length < 2 ) { return false; }

        var target = document.getElementById( hash.slice(1) );
        if ( target === null ) { return false; }

        var top = target.getBoundingClientRect().top;
        return (top < 2) && (top > -2);
    };

    // Hide navbar on load if hash target is on top
    var navBar = document.getElementById("navbar");
    var navBarToggler = document.getElementById("sk-navbar-toggler");
    var navBarHeightHidden = "-" + navBar.getBoundingClientRect().height + "px";
    var $window = $(window);

    hideNavBar = function() {
        navBar.style.top = navBarHeightHidden;
    };

    showNavBar = function() {
        navBar.style.top = "0";
    }

    if (hashTargetOnTop()) {
        hideNavBar()
    }

    var prevScrollpos = window.pageYOffset;
    hideOnScroll = function(lastScrollTop) {
        if (($window.width() < 768) && (navBarToggler.getAttribute("aria-expanded") === 'true')) {
            return;
        }
        if (lastScrollTop > 2 && (prevScrollpos <= lastScrollTop) || hashTargetOnTop()){
            hideNavBar()
        } else {
            showNavBar()
        }
        prevScrollpos = lastScrollTop;
    };

    /*** high preformance scroll event listener***/
    var raf = window.requestAnimationFrame ||
        window.webkitRequestAnimationFrame ||
        window.mozRequestAnimationFrame ||
        window.msRequestAnimationFrame ||
        window.oRequestAnimationFrame;
    var lastScrollTop = $window.scrollTop();

    if (raf) {
        loop();
    }

    function loop() {
        var scrollTop = $window.scrollTop();
        if (lastScrollTop === scrollTop) {
            raf(loop);
            return;
        } else {
            lastScrollTop = scrollTop;
            hideOnScroll(lastScrollTop);
            raf(loop);
        }
    }
  })();
});

</script>
    
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
    
</body>
</html>